- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在许多情况下,toFixed()
会因 JavaScript 数学中的浮点而失败。
我找到了这个解决方案:
function toFixed(decimalPlaces) {
var factor = Math.pow(10, decimalPlaces || 0);
var v = (Math.round(Math.round(this * factor * 100) / 100) / factor).toString();
if (v.indexOf('.') >= 0) {
return v + factor.toString().substr(v.length - v.indexOf('.'));
}
return v + '.' + factor.toString().substr(1);
}
还有这个:
function toFixed(num, fixed) {
var re = new RegExp('^-?\\d+(?:\.\\d{0,' + (fixed || -1) + '})?');
return num.toString().match(re)[0];
}
还有其他方法吗?我必须确保在任何情况下都表现良好。也在边界情况下。
编辑: https://github.com/MikeMcl/decimal.js@Tschallacka
Number.prototype.toFixed = function(fixed) {
x = new Decimal(Number(this));
return x.toFixed(fixed);
};
最佳答案
我建议你使用一个库:
https://github.com/MikeMcl/decimal.js
我发现它在处理财务数据时非常可靠。
使用 float 总是很困难,但有几种解决方案。我建议你使用一个维护良好的现有库,它的乳牙已经被敲掉了。
假设您添加了decimal.js,您可以针对财务值(value)执行此操作。
/**
* @var input float
*/
function toFixed(input) {
var dec = new Decimal(input);
return dec.toFixed(2);
}
console.log("float to fixed 2 decimal places: ",toFixed(200.23546546546));
function toFixed2(decimalPlaces) {
var dec = new Decimal(1);
return dec.toFixed(decimalPlaces);
}
console.log("get a fixed num: ",toFixed2(10));
Number.prototype.toFixed = function(fixed) {
x = new Decimal(Number(this));
return x.toFixed(fixed);
};
var num = new Number(10.4458);
console.log("Number to fixed via prototyped method: ",num.toFixed(2));
var x = 44.456
console.log('Number to fixed via inderect number casting:' ,x.toFixed(2));
<script src="https://cdnjs.cloudflare.com/ajax/libs/decimal.js/7.1.1/decimal.min.js"></script>
关于javascript toFixed(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41717035/
像下面这样使用 toFixed 得到: var a=0.5, b=1, c=1.5; console.log(a.toFixed(), b.toFixed(), c.toFixed()); // 0.
这个问题已经有答案了: Javascript toFixed function (6 个回答) 已关闭 9 年前。 当非小数部分大于 4 时,小数部分将被 chop 为 .3但当它小于 4 时,它会四
var number = 1.2; var rounded = number.tofixed() + 2 我正在尝试用任何数字求和 tofixed 值,但使用上面的代码我被四舍五入 = 12 吓到了.
我想知道之间的主要区别是什么 (2.3444).toFixed(2) ==> 2.34 还有 +(2.3444).toFixed(2) ==> 2.34 它们都给出相同的结果。谁能解释一下我什么时候需
根据这个post , 42..toFixed( 3 ); // "42.000" 上述代码有效,42..toFixed(3) 有效,因为第一个 . 是数字的一部分,第二个 . > 是属性运算符。
在许多情况下,toFixed() 会因 JavaScript 数学中的浮点而失败。 我找到了这个解决方案: function toFixed(decimalPlaces) { var factor =
我有以下代码块: export interface Record { Percentage_Emissions: number; Percentage_Emissions_Previous: numb
我正在使用 javascript 绑定(bind)到一些复选框,toFixed(2) 没有四舍五入。任何想法为什么它不四舍五入?例如,如果号码是 859.385,它只会显示 859.38 而不是 85
在我的程序中,我需要四舍五入到最接近的两位小数的“浮点”数字,经过一番研究,我决定使用 toFixed(..) 来实现此目的,如下例所示。使用 toFixed() 的缺点是什么?它在所有浏览器中都能正
美好的一天, 我仍在学习 JS 和 HTML,我注意到一些对我来说非常有趣的事情 我正在使用 Google 地理编码脚本,并在 map 上创建了一个点击事件来检索 GPS 坐标, function
我正在使用 toFixed 但该方法未按预期运行 parseFloat(19373.315).toFixed(2); //19373.31 Chrome 预期输出:19373.32 parseFl
我正在测试 javascript 的 toFixed() 方法。结果如下图。 (49.175).toFixed(2) => "49.17" (49.775).toFixed(2) => "49.77"
在特定组的用户的帐户仪表板上会显示一个唯一的编号。该数字是从数据库中获取并经常更改的。数量小于 10,000,000。 如果元素的宽度开始 chop 文本,那么将数字从“2,643,977”更改为“2
我的代码出现错误,以前从未遇到过这个错误,这真的很奇怪。我确实尝试过 parseFloat 但这也不起作用..代码:https://gist.github.com/markd69/aca03cab20
我正在使用 KnockoutJS,但遇到了一个问题,我不知道如何寻找解决方案: 我有一个包含记录的表: Edit Enter Hour
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
对于四舍五入小数(价格),我已经使用 .toFixed(2) 一段时间了。但我最近发现 JavaScript 不能“精确”四舍五入小数。我有点震惊,即使 10.005 也无法正确舍入为 10.01。它
我有以下代码来计算并显示两个值的总和。 var oldprice_formated = parseFloat(oldprice).toFixed(2); var extraPrice = parseF
这是我的脚本: jQuery(document).ready(function () { jQuery('#btnCalculate').click(function () {
我想保留数字后面的两位数字,即 2.89 或 2.00。谷歌把我带到this answer使用.toFixed(2)。 虽然效果很好,但在输入 input 值时效果不佳: const [ value,
我是一名优秀的程序员,十分优秀!