roundto函数带来的问题 single类型的四字节浮点数,用roundto(asingle,-2)保留两位小数,这时出现个一个问题,是如果asingle小于或大于一个值的时候,asingle就用科学计数法表示,在用roundto就会有错误,现在想知道这个界限值,怎么判断这个值避免这个问题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 最好的办法是用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)出现异常). 希望是正确的。 roundto 建议少用还是用FloatToStr 好用点 请教关于数组传参的问题 这个问题有点复杂,急!! 这个项目就只剩这样一个问题了--------大家进来看看吧 请教如何进行对下载链接的测速? 用Dephi 7编写的 DLL 在Window 中无法添加新元件? 一个二进制转换问题,请各位帮忙!高分!在线等! 在delphi如何处理用条码扫描仪扫描一个商品信息... 怎样保证MDIForm父窗体只有一两个MDIChild子窗体? 高手请进:在Delphi三层ADO连接时,当在Oracle英文字符集写入中文时出现乱码! 求教:如何实现打开*.doc文件的编辑器? 调用dll函数的问题 Delphi使用ADO连接MySql时提示错误
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次方