全部博文(788)
分类:
2008-11-27 21:16:49
能不能避免用科学计数法表示
最好的办法是用FloatToStr,然后再对字符串操作,精度上不会出现xx.xx9999999999这样的情况。
学习;
对付这类问题,比较灵活的办法是自己编程处理。你可以看看roundto的源码
function RoundTo(const AValue: Double; const ADigit: TRoundToRange): Double;
var
LFactor: Double;
begin
LFactor := IntPower(10, ADigit);
Result := Round(AValue / LFactor) * LFactor;
end;
其中intpower 原型:
function intpower(base:float;const exponent:Integer):float
功能:返回base的exponent次方
今天起得早,运动完后做下数学题,由于没有相关准确资料, 我用硬代码测试了一下,这个临界值=92233722601930753。(aSingle >= 临界值则roundto(asingle,-2)出现异常). 希望是正确的。
如果带小数点的话, 临界值 = 92233722601930752.005
roundto 建议少用
还是用FloatToStr 好用点
我写了个1E15,不管精确度了
1E15小了一些。