• 6528阅读
  • 3回复

求救啊,qt中关于浮点类型的处理。。。 [复制链接]

上一主题 下一主题
离线10点睡觉
 
只看楼主 正序阅读 楼主  发表于: 2009-11-13
我想从利用字符串类的类型转换功能把字符串”0.001“,转换成浮点类型的0.001,利用toFloat()成员函数转换后精度不够啊,离0.001很近,但不是0.001,有没有好的方法,转换成非常精确的值??万分感谢!!
离线10点睡觉
只看该作者 3楼 发表于: 2009-11-14
谢谢,我换成使用double类型的基本上就比较理想了
离线steinlee

只看该作者 2楼 发表于: 2009-11-14
if your value a = 0.0009999999, you can do the following,
if ( fabs( a - 0.001) < 1.e-7 )
{
      a = 0.001;
}

another way

if ( fabs( a * 1000.0  - 1.0 ) < 1.e-5 )
{
      a = 0.001;
}

Normally floating conversion error can not be avoided. Little thing. But you need to be aware of.

引用楼主10点睡觉于2009-11-13 22:39发表的 求救啊,qt中关于浮点类型的处理。。。 :
我想从利用字符串类的类型转换功能把字符串”0.001“,转换成浮点类型的0.001,利用toFloat()成员函数转换后精度不够啊,离0.001很近,但不是0.001,有没有好的方法,转换成非常精确的值??万分感谢!!
[ 此帖被steinlee在2009-11-14 01:38重新编辑 ]
Looking for remote C/C++ and Qt 兼职
离线dbzhang800

只看该作者 1楼 发表于: 2009-11-13
引用楼主10点睡觉于2009-11-13 22:39发表的 求救啊,qt中关于浮点类型的处理。。。 :
我想从利用字符串类的类型转换功能把字符串”0.001“,转换成浮点类型的0.001,利用toFloat()成员函数转换后精度不够啊,离0.001很近,但不是0.001,有没有好的方法,转换成非常精确的值??万分感谢!!


这个和Qt没关系,C/C++ 中float和double都遵循 IEEE754

如果你想知道原因,可以去翻翻IEEE754,或者找本计算机组成原理的教材。

0,001 在2进制世界里 和 1/3在10进制里面是类似的
快速回复
限100 字节
 
上一个 下一个