关于Float数据类型,取小数点后几位精度的问题。

Realot_11 2003-01-06 04:20:01
我有一系列的Float数据,现在进行加减乘除运算,如何将得到的结果限定小数位数?多余位数进行4舍5入,结果仍然为Float类型?
这个看似简单的问题,使我十分头痛。
...全文
2751 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjlsmail 2003-01-07
  • 打赏
  • 举报
回复

ShowMessage(FormatFloat('0,000.00',1234.456789)) ;

Realot_11 2003-01-07
  • 打赏
  • 举报
回复
谢谢各位提供的方法,结帖散分。
goodloop 2003-01-06
  • 打赏
  • 举报
回复
同意阿贵的方法~~
star_of_light 2003-01-06
  • 打赏
  • 举报
回复
function FormatFloat(const Format: string; Value: Extended): string;
f:=1255423.5968;
Str:=FormatFloat('0,0.000',f);
结果Str=1,255,432.597
光明山人 2003-01-06
  • 打赏
  • 举报
回复
另外,可以直接使用函数:RoundTo,这个函数跟一些设置有关系,需要注意一下。
注意它的第二个参数,需要为负数。请看联机帮助。
光明山人 2003-01-06
  • 打赏
  • 举报
回复
假设原来的数为f, 你想留下小数点后n位。

a := Round(f*(power(10,n))) / power(10,n);
hhhrrrttt 2003-01-06
  • 打赏
  • 举报
回复
如果是精确到小数点后面两位,并四舍五入的话:
FormatFloat('#0.00', a);
其中a就是你最开始得到的结果。其他的以此类推就可以了。
ehom 2003-01-06
  • 打赏
  • 举报
回复
可以考虑利用字符串,希望这贴子有点用!

http://expert.csdn.net/Expert/TopicView2.asp?id=1079479
Realot_11 2003-01-06
  • 打赏
  • 举报
回复
如何将数据来回进行转换,因为数据多,这样比较麻烦,我想有没有一种简单的方法。
Realot_11 2003-01-06
  • 打赏
  • 举报
回复
最后进行处理也可以,但是还有一个问题是小数点前面的位数是不固定的。如何处理?
gzyzljk 2003-01-06
  • 打赏
  • 举报
回复
先转成一字符串,按4舍5入处理后,转为FLOAT即可...(授人以鱼不如授人以渔)
mysqlcom 2003-01-06
  • 打赏
  • 举报
回复
formatFloat('#.####',3.145777777)
cupidvenus 2003-01-06
  • 打赏
  • 举报
回复
有必要吗?只将最后的结果进行四舍五入不行吗?
如果一定要对中间结果也进行四舍五入,你可以从新写一个数据类型的类来完成.

5,929

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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