js浮点数运算不准确

JavaScript的计算结果:

// 加法 =====================
// 0.1 + 0.2 = 0.30000000000000004
// 0.7 + 0.1 = 0.7999999999999999
// 0.2 + 0.4 = 0.6000000000000001
// 2.22 + 0.1 = 2.3200000000000003

// 减法 =====================
// 1.5 - 1.2 = 0.30000000000000004
// 0.3 - 0.2 = 0.09999999999999998

// 乘法 =====================
// 19.9 * 100 = 1989.9999999999998
// 19.9 * 10 * 10 = 1990
// 1306377.64 * 100 = 130637763.99999999
// 1306377.64 * 10 * 10 = 130637763.99999999
// 0.7 * 180 = 125.99999999999999
// 9.7 * 100 = 969.9999999999999
// 39.7 * 100 = 3970.0000000000005

// 除法 =====================
// 0.3 / 0.1 = 2.9999999999999996
// 0.69 / 10 = 0.06899999999999999

结合我的需求,两个数字作运算,得到的是整数,则输出整数,小数1位则保留一位,小数两位及以上均保留两位,我作出以下调整:

js:
shengPrice=shengPrice.toFixed(2);//强转为两位
if(shengPrice.substr(shengPrice.length-1,1)=="0"){//若小数点最后一位是0 则去掉1.00~1.0 ,1,20~1.2
     shengPrice= shengPrice.substring(0,shengPrice.length-1);
}
php
/ * 整数的显示整数,有小数点价格有一位显示一位,有两位显示两位小数点,最多显示两位。
 * @return type
 */
public function getFloatLength($num) {
    $count = 0;
    $temp = explode ( '.', $num );
    if (sizeof ( $temp ) > 1) {
    $decimal = end ( $temp );
    $count = strlen ( $decimal );
    }
    if($count>2){
        $num=number_format($num, 2, '.', '');
    }
    return $num;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 时间过的很快,我发现如果不记录,很快就会忘记很多旅行的细节,虽然已过去近半年,还是用文字记录下和孩子一起每一次旅程...
    晓燕读财报阅读 4,145评论 2 2
  • 文/子沐 我们发现沟通能力强的人沟通方式永远不会只是一种,在《沟通的艺术》中,作者提到会沟通的人拥有自己的沟通问题...
    小雨蜗牛阅读 3,161评论 0 0
  • 哈哈,今天高温天,出门就是一身汗,特别酸爽。早起空腹,带上检查结果就去了市妇幼,跟我们小区只隔了一条马路。建档很快...
    LubQ阅读 1,345评论 1 1
  • 一本书,一个人 我这个人随和,事事处处紧跟别人的步伐。读大学是在上世纪90年代初到中期,有位同窗好友在图书馆借了一...
    梦与翼阅读 2,271评论 0 2
  • 我想,你是星空 只远远望着,便惊艳得使人不敢出气 我想,你是明月’ 只默默看着,那笑容便使人不能自已’ 你会开心如...
    一树青桃阅读 1,020评论 0 2