javascript - 如何计算点后面两位小数的数字
问题描述
这是我的表格:
<input type="text" class="form-control amount" value="" placeholder="amount" />
<input type="hidden" class="price" value="3.30" />
<input type="text" class="form-control total" value="" disabled />
我的js:
$('.amount').on('keyup', function (e) {
e.preventDefault();
var amount = $('.amount').val();
var total = Number(amount) * Number($('.price').val());
$('.total').val(total);
});
如果我填写了 的数量3
,则输入中的结果会total
显示:9.899999999999999
而不是19.80
. (3 * 3.30 正好是 9.90)。
有人能解释一下为什么结果是点后面有这么多字符吗?
我知道我可以将结果减少到小数点后 2 位,.toFixed(2)
但这并不能解释为什么一个值恰好 9.90
变为9.899999999999999
解决方案
这是因为浮点数存储为二进制数字的方式。为了启用广泛的数字并仍然为每个数字在内存中保持合理的大小,结果的精度会有所牺牲。你可以在这里阅读更多关于https://stackoverflow.com/a/588014/3807365
推荐阅读
- python - 使用 python 可执行文件从 Windows 命令行运行 .py 文件时出现 Numpy 导入错误
- android - 无论我尝试什么,都无法让 ViewModel 上的 SavedState 正常工作
- amazon-web-services - 使用 DNS 来自终端的 SSH beanstalk
- javascript - 无法使用 axios 从反应视图发送多部分/表单数据
- reactjs - 无法使用 useState()
- wordpress - WordPress 添加
如果我不在循环中使用 wp_reset_postdata()和标签。为什么? - .net-5 - EF Core 5 两个日期时间之间的总和差异
- kubernetes - 在不删除现有项目文件的情况下将文件挂载到 Kubernetes Pod?
- angular - 类型 'typeof import("c:/productcatelog2/src/client/app/shared/product.model")'.ts' 上不存在属性 'find'
- angular - Angular 路由在开发模式下工作,但在作为 Spring Boot 应用程序启动时不工作