D duron Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-15 #1 什么函数能使浮点数后小数点保留2位(四舍五入) 用floattocurr()能不能实现
S svw0506 Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-15 #4 自己写代码:Int(值*100+0.5)/100,现成的函数好象没有 dataset1.fieldbyName('aaa').asfloat:= int(dataset1.fieldbyName('aaa').asfloat*100+0.5)/100
自己写代码:Int(值*100+0.5)/100,现成的函数好象没有 dataset1.fieldbyName('aaa').asfloat:= int(dataset1.fieldbyName('aaa').asfloat*100+0.5)/100
S SanDao Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-15 #5 strtofloat(formatfloat('0.00',number)); ------------------- 别外学来的,教你一招! float((round(number*100))/100)
strtofloat(formatfloat('0.00',number)); ------------------- 别外学来的,教你一招! float((round(number*100))/100)
T twos Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-15 #6 你要变成字符串? format('%.2f',[yournumber])就行
R rainsea Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-15 #7 教你一招! 先加0.05然后取小数点后两位,就不用四舍五入了。 呵呵,其实楼上说的都可以。
S svw0506 Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-15 #8 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不行。 还是象我上面说的那样自己写函数吧
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不行。 还是象我上面说的那样自己写函数吧
S SanDao Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-15 #9 不过要注意奇偶数! “四舍六入五取双” round(1.5)=2 round(2.5)=2 具体请参考http://www.delphibbs.com/delphibbs/dispq.asp?LID=1049035
不过要注意奇偶数! “四舍六入五取双” round(1.5)=2 round(2.5)=2 具体请参考http://www.delphibbs.com/delphibbs/dispq.asp?LID=1049035
S SanDao Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-15 #10 svw0506老哥说的没错!我补充说明前没见到你发的贴子!
S SanDao Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-15 #12 如果你用的是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一样的!
如果你用的是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一样的!
S SanDao Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-15 #13 谢谢给分!给svw0506老哥太少了点!:》 事实上"银行家舍入法"或者叫“四舍六入五取双”从概率论来讲要更合理一些! -------------------------- 比如FormatFloat函数在处理1.01499999时,取两位为1.01,误差太大!
谢谢给分!给svw0506老哥太少了点!:》 事实上"银行家舍入法"或者叫“四舍六入五取双”从概率论来讲要更合理一些! -------------------------- 比如FormatFloat函数在处理1.01499999时,取两位为1.01,误差太大!