如何将浮点数值 3.1415 改为 3.14 ?

54thb 2004-01-03 02:45:58
我用的笨方法是
float(int(3.1415*100))/100
应该有函数的吧?
...全文
296 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
pcclever 2004-01-03
  • 打赏
  • 举报
回复
建议楼主还是用双精度好一些,不然转换后还是会有楼上说的3.139999999999999的问题。
54thb 2004-01-03
  • 打赏
  • 举报
回复
楼上的好象不抵用啊
zihan 2004-01-03
  • 打赏
  • 举报
回复
问题:
比如:
  
   我用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,因为计算机是取整的,所以就可以了。
BCB 2004-01-03
  • 打赏
  • 举报
回复
3.1415 改为 3.14 ,但会变成3.1399999999999999或3.14000000001
未见现在的函数,现在的函数只是: 浮点-->串 而不是 浮点-->浮点

zihan 2004-01-03
  • 打赏
  • 举报
回复
a = 3.1415;
FormatFloat("0.00",a)
comefirst 2004-01-03
  • 打赏
  • 举报
回复
可以用sprinf 可以格式化啊。

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧