菜鸟问题,什么函数能使浮点数后小数点保留2位(四舍五入)(50分)

  • 主题发起人 主题发起人 duron
  • 开始时间 开始时间
D

duron

Unregistered / Unconfirmed
GUEST, unregistred user!
什么函数能使浮点数后小数点保留2位(四舍五入)
用floattocurr()能不能实现
 
FormatFloat('0.00',变量)
 
自己写代码:Int(值*100+0.5)/100,现成的函数好象没有
dataset1.fieldbyName('aaa').asfloat:= int(dataset1.fieldbyName('aaa').asfloat*100+0.5)/100
 
strtofloat(formatfloat('0.00',number));
-------------------
别外学来的,教你一招!
float((round(number*100))/100)
 
你要变成字符串? format('%.2f',[yournumber])就行
 
教你一招!
先加0.05然后取小数点后两位,就不用四舍五入了。
呵呵,其实楼上说的都可以。
 
SanDao说的不行因为:
在最近版本的Delphi Pascal 编译器中,
Round 函数是以 CPU 的 FPU (浮点部件) 处理器为基础的。
这种处理器采用了所谓的 "银行家舍入法",即对中间值 (如 5.5、6.5)
实施Round函数时,处理器根据小数点前数字的奇、偶性来确定舍入与否,
如 5.5 Round 结果为 6,而 6.5 Round 结果也为6, 因为 6 是偶数。
所以round(4.9999999....)是4,而不是5,所以用round不行。
还是象我上面说的那样自己写函数吧
 
不过要注意奇偶数!
“四舍六入五取双”
round(1.5)=2
round(2.5)=2
具体请参考http://www.delphibbs.com/delphibbs/dispq.asp?LID=1049035
 
svw0506老哥说的没错!我补充说明前没见到你发的贴子!
 
多人接受答案了。
 
如果你用的是Delphi6还可用RoundTo
RoundTo(1234567, 3) 1234000
RoundTo(1.234, -2) 1.23
RoundTo(1.235, -2) 1.24
RoundTo(1.245, -2) 1.24//注意,它还是1.24
原理上是和Round一样的!
 
谢谢给分!给svw0506老哥太少了点!:》
事实上"银行家舍入法"或者叫“四舍六入五取双”从概率论来讲要更合理一些!
--------------------------
比如FormatFloat函数在处理1.01499999时,取两位为1.01,误差太大!
 

Similar threads

后退
顶部