求float算法,对大家绝对有用
本帖最后由 孤独将一 于 2013-5-6 09:32 编辑unsigned int a=10,b=29.
float c;
求c怎么变成10.29,C环境,AVR STUDIO 4
c = (float)(a*100+b)/100;不行
新问题来了,浮点数怎么变成字符串打印。我是一点一点把数字拆开打印的。gcvt(num_double, 8, str_double);这函数不能用 c=b;
c =c/a/a;
c = c+a; 你是想表达C=a+b/100,吗? x11223y 发表于 2013-5-5 18:34 static/image/common/back.gif
你是想表达C=a+b/100,吗?
试过。不行的。第一次就是这么写 孤独将一 发表于 2013-5-5 19:45 static/image/common/back.gif
试过。不行的。第一次就是这么写
肯定要加上强制类型转换啊 x11223y 发表于 2013-5-5 19:48 static/image/common/back.gif
肯定要加上强制类型转换啊
c = (float)(a*100+b)/100; ((float)a*100+b)/100 孤独将一 发表于 2013-5-5 19:45 static/image/common/back.gif
试过。不行的。第一次就是这么写
c=a+b/100.f 孤独将一 发表于 2013-5-5 19:52 static/image/common/back.gif
c = (float)(a*100+b)/100;
这句我也不理解float是怎么转化的,是对怎么后面的表达式(a*100+b)/100转化?
float temp;
temp = (float)b;
temp = temp/(100.0);
temp = (float)a + temp; 本帖最后由 孤独将一 于 2013-5-5 22:30 编辑
x11223y 发表于 2013-5-5 20:01 static/image/common/back.gif
这句我也不理解float是怎么转化的,是对怎么后面的表达式(a*100+b)/100转化? ...a=4;
c=3;//还能插代码,靠方便a=4,b=3
c=(4*10+3)/10=4.3 zhangsusu 发表于 2013-5-5 20:05 static/image/common/back.gif
我去。关键的数字后面得有“.0”。明我试试!!! zhangsusu 发表于 2013-5-5 20:05 static/image/common/back.gif
Matlab算的当然支持了。不过谢谢你的“100.0” 本人一直都用10楼的方法 你这也算标题党吧?我已开始以为是要提高计算效率,后来才看明白是C不过关。 10 楼方法不错,学到了。 赞一个{:smile:} Sullivan 发表于 2013-5-5 21:59 static/image/common/back.gif
你这也算标题党吧?我已开始以为是要提高计算效率,后来才看明白是C不过关。 ...
标题党?NO,我是新手。能解决问题的就不是。这网站能插代码,方便啊 所有的整形全部加上强制类型转换 … c=a+b/100.0;
这样行不? c=(float)a+(float)b/100;
也可以写成
c=a+(float)b/100;
隐含的类型转换
eduhf_123 发表于 2013-5-5 23:52 static/image/common/back.gif
c=a+b/100.0;
这样行不?
理论上也行。 100.0是关键。否则会先做整数除法运算,然后才转成浮点,但是已经晚了。 孤独将一 发表于 2013-5-5 20:19 static/image/common/back.gif
Matlab算的当然支持了。不过谢谢你的“100.0”
亲 这不是matlab算法啊
matlab默认的格式是double
我这是标准c 孤独将一 发表于 2013-5-5 20:19 static/image/common/back.gif
Matlab算的当然支持了。不过谢谢你的“100.0”
其实有一个很简单的规则
1.不要让编译器自己决定数据类型
比如int/float 你把数据类型显示的告知 做成 float/float就行了
2.不要让编译器自己决定优先级
用括号显示的告知编译器就行了 zhxzhx 发表于 2013-5-6 02:51 static/image/common/back.gif
也可以写成
c=a+(float)b/100;
隐含的类型转换
我还是不建议把数据类型搞得模模糊糊的
我个人很讨厌
+=
=+
++i (i++ 可以接受)
隐式优先级这些东西
多打几个字母又死不了人
c=(float)a+(float)b/100.0 对于 +-*/ 表达式,一般地有 char --> int -->float --> double。
若表达式中有一个float型数据,则按float型来处理;如果没有float,则按int或long型数据来处理。
所以,为了实现目的,应使用 c = a + (float)b/100; 或者是 c = a + b/100.0; zhangsusu 发表于 2013-5-6 09:14 static/image/common/back.gif
我还是不建议把数据类型搞得模模糊糊的
我个人很讨厌
+=
{:handshake:}++++ 、-----------这类写法搞死人,序列点拿来研究还行,千万别用在工程中。 3htech 发表于 2013-5-6 16:54 static/image/common/back.gif
对于 +-*/ 表达式,一般地有 char --> int -->float --> double。
若表达式中有一个float型数据,则按floa ...int a, b;
float c;
c = (float)a + float(b)/(100.0);《C专家编程》上推崇这种不用动脑筋的可靠写法 标准函数 sprintf应该有吧,用这个还是很简单的,但代码量大大增加 c = (float)(a*100+b)/100;为什么不行?
我看标准的写法就是这个
页:
[1]