在Javascript中,对于货币来说,是toFixed()足够精确
In Javascript, is toFixed() accurate enough for currency?
我正在创建一个用于计算订单总额的脚本。有些变量会改变价格,因此会出现一些长数字小数。
toFixed()
是否足够精确,可以对这些数字进行四舍五入并始终得到相同的结果?
编辑:我想出的解决方案是使用这个:
Number.prototype.toCurrency = function(){
return Math.round(this*100)/100;
}
这足以保持一致性吗?
您不应该为此使用toFixed
,因为它不能在浏览器之间一致工作。
Javascript中的所有数字都是双精度浮点数字。浮点数字根据定义是不精确的,因此数字表示本身不够精确,无法总是得到精确的结果。
如果你想在Javascript中得到一个可预测的结果,你必须记住数字的精度限制,这样你就总是有足够大的裕度来正确地舍入数字。
相关文章:
- 货币代码为欧元-金额的格式不应包含小数
- 将数字四舍五入到小数点后两位,以设置货币格式
- 带Js的货币转换器
- 使用JAVASCRIPT转换货币.可以't通过我的函数设置转换后的输入文本字段的值
- 格式化货币无效
- 浏览器intl.NumberFormat未正确显示货币符号
- JS toLocaleString始终显示货币符号,而不考虑区域设置
- toFixed and replace dons'这似乎奏效了
- 在Javascript中,对于货币来说,是toFixed()足够精确
- 如何使用jquery对货币格式的数字求和
- 获取日期和货币格式
- 将数字格式化为货币,两位小数
- 如何让剑道网格为货币上色
- toFixed javascript函数给出奇怪的结果
- 通过javascript在文本字段中显示货币格式
- AngularJS中货币过滤器的Javascript代码无法使用自定义符号
- Java脚本插件,用于将数字转换为特定于区域性的货币格式,并将具有特定货币格式的非格式化数字转换为普通数字
- 图表.js 2.0 使用货币和千位分隔符格式化 Y 轴
- 我们如何自定义内置的 Angular “货币”过滤器
- JavaScript:始终从函数(货币支持)返回 .toFixed(2)