delphi 怎么保留2位小数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi 怎么保留2位小数相关的知识,希望对你有一定的参考价值。

首先我用的是工业标准 就是4舍6入5成双 也就是ROUND()默认的

但是不会保留小数 用 ROUND(X*100)/100
变成4舍5入了 不行啊
怎么办怎么办

参考技术A format('%.2f',[x]);

javascript算保留两位小数的数字的连加怎么结果出现了保留12位小数的结果?

<script type="text/javascript">
alert(4359.45+3975.60+3565.20+3196.20+2881.20+2553.60+2323.05+2054.19+1714.92+1431.24+1359.60);
</script>
代码如上

参考技术A var sum = (4359.45+3975.60+3565.20+3196.20+2881.20+2553.60+2323.05+2054.19+1714.92+1431.24+1359.60).toFixed(2);
alert(sum);

这样写就OK了,该问题是JS中浮点数运算问题导致的

追问

为什么会导致这个问题呢?

追答

你百度一下“JS浮点运算”就能找到资料

参考技术B <script type="text/javascript">
alert(4359.45*100+3975.60*100+3565.20*100+3196.20*100+2881.20*100+2553.60*100+2323.05*100+2054.19*100+1714.92*100+1431.24*100+1359.60*100)/100;
</script>

 总结:

     1、尽量不要用JS做复杂的运算,特别是浮点数的运算。

     2、如果一定要进行浮点数的运算的话,先将浮点数转化为整形,再运算。

参考技术C 是js浮点运算精度丢失的问题
java里也有这样的问题 所以做高精度运算需要用到BigDecmal类追问

但js是弱类型的语言,怎么才能做到用高精度的小数类型呢?

追答

这就需要 用js 进行模拟封装类似BigDecmal类 或者计算时做特殊处理
n为小数点位数
扩大n倍后 计算
然后再缩小n倍
这样保证不会丢失精度

本回答被提问者采纳

以上是关于delphi 怎么保留2位小数的主要内容,如果未能解决你的问题,请参考以下文章

delphi怎么把一个数据保留两位小数

delphi 保留两位小数

delphi 如何保留小数

c语言中怎么保留小数2位

怎么保留一位小数?

bigdecimal multiply 怎么保留2位小数