我用的笨方法是
float(int(3.1415*100))/100
应该有函数的吧?
3.1415 改为 3.14 ,但会变成3.1399999999999999或3.14000000001
未见现在的函数,现在的函数只是: 浮点-->串 而不是 浮点-->浮点
问题:
比如:
我用C++ BUILDER我要实现一个
AnsiString s1=2.9;
float f1;
f1=StrToFloat(s1)
结果变出来的是f1=2.8994324234
怎么样可以让f1=2.9
请高手指教~~~~~
解答:
这个是计算机内的存储格式引起的,因为我们知道,一个浮点数,他不会象字符串一样,在最后面给我们保存一个\0,所以他会根据实际内容进行一定的转化比如说我们保存的一个数
float a = 1.10;那么,在计算机内并不是保存的1.10,而是保存的有可能象1.09........只类的东西,所以,当我们显示出来的时候,你看到的是一长窜,这个并不影响我们的操作,我门需要注意的是就只是当我们要把他显示出来的时候,会有一定的错误,所以我们只要把他显示出来的修改就可以了,比如说我要显示上面的那个数,我们可以采用这样的方法.
ShowMessage(FormatFloat("0.00",a));
那么将显示出1.10;我们在tc里面也有类试的用法,比如说%.2f.
换句话说,你是不知道计算机里面是怎样保存这个数的,如果你担心误差的问题,你可以把最后以为他加上5,因为计算机是取整的,所以就可以了。
建议楼主还是用双精度好一些,不然转换后还是会有楼上说的3.139999999999999的问题。