搜索
javascript - js计算的奇怪问题?
PHP中文网
PHP中文网 2017-04-10 15:47:40
[JavaScript讨论组]

最近做一个报价计算器。

result = 1053*area*1.08;
console.log(result);

如果area的值是100
那么输入为113724.00000000001

这是什么奇怪的问题呢?
问题1.
如何对计算结果保留2位小数。
问题2:
是什么原因造成了输出的。00000000001?

求高手指点。

PHP中文网
PHP中文网

认证0级讲师

全部回复(5)
PHP中文网

浮点运算会有精度损失,

// 用 toFixed 变成字符串,这是肯定保持得住的
// 注意:toFixed 在“四舍五入”这个问题上不同的运行环境有不同的实现
console.log(result.toFixed(2));
伊谢尔伦

问题1:
计算精读丢失问题。因为有些十进制的浮点数不能很好的转化为二进制
问题2:

Number(result).toFixed(2)
大家讲道理

1、对计算结果保留两位小数:result.toFixed(2)
2、浮点数在计算机中的存储是不精确的。

迷茫

这是因为:计算机储存浮点数使用的是二进制

一个十进制的有限小数,转化成二进制后可能会变成无限循环小数

然而,计算机储存能力是有限的,只能储存一定数量的小数位,剩下的将被舎去

于是,就出现了这样的误差

怪我咯

简单方案:

result = 1.08*area*1053;
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号