主题:float类型定义变量,给它附值0.1,为什么结果不是0.1?
colin1
[专家分:0] 发布于 2006-03-23 16:25:00
float类型定义变量,给它附值0.1,为什么结果是0.1000000000149?这个值是后面用来计算用的,要精确的值。
既然已经定义类型,那么该值的格式也已经固定,为什么会这样呢?如何避免?
float a;
a=0.1;
Edit1->Text = a;
这是碰到问题后另建项目做验证,结果一样。
请知道问题所在的指点一下!
回复列表 (共5个回复)
沙发
过天星 [专家分:60] 发布于 2006-03-25 00:57:00
我把后面的
Edit1->Text=FloatToStr(a);
运行结果还是一样,就是是什么原因呢?
板凳
bingyan [专家分:220] 发布于 2006-03-25 21:15:00
float好象本来就是非精确的,你用函数格式化一下,保留固定位数的小数应该就没有问题了
3 楼
mrluowei [专家分:30] 发布于 2006-03-29 19:44:00
我看了你写的,我觉得你的想法是对的,但是可能你的方法可能不对吧?
你在:
float固定位数的小数应该就没有问题了.
你的小数点就没有固定.............
4 楼
tingyazhao [专家分:50] 发布于 2006-04-30 16:04:00
那到底应该怎么办呢?
5 楼
yss2004 [专家分:30] 发布于 2006-05-01 11:40:00
float数据的精确度好象只有小数点后七位(自己查一下) 也就是说在计算时如果你都采用float 那么结果的精确度也就只有那么多位!后几位是随机产生的
要想精确些用 double 就是了
我来回复