提问人:alex 提问时间:7/2/2010 最后编辑:mskfisheralex 更新时间:12/15/2022 访问量:593142
JavaScript 将浮点数显示到小数点后 2 位
JavaScript displaying a float to 2 decimal places
问:
我想显示一个数字到小数点后 2 位。
我以为我可以在 JavaScript 中使用。toPrecision(2)
但是,如果数字是 ,我得到 .我宁愿它保持不变。0.05
0.0500
在 JSbin 上看到它。
最好的方法是什么?
我可以想到编写一些解决方案,但我想(我希望)这样的东西是内置的?
答:
你可以用这个函数来做,但它在IE中是有问题的。如果你想要一个可靠的解决方案,请看我的答案。toFixed
评论
float_num.toFixed(2);
尝试 toFixed
而不是 .toPrecision
float_num.toFixed(2);
注意:toFixed()
将在必要时用零四舍五入或填充以满足指定的长度。
评论
不知道我是怎么得到这个问题的,但即使已经很多年没有问到这个问题了,我也想添加一个我遵循的快速而简单的方法,它从未让我失望:
var num = response_from_a_function_or_something();
var fixedNum = parseFloat(num).toFixed( 2 );
评论
parseFloat()
function round(value, decimals) {
return Number(Math.round(value+'e'+decimals)+'e-'+decimals);
}
圆形(1.005, 2);回报率 1.01
圆形(1.004, 2);返回 1 而不是 1.00
答案是以下链接: http://www.jacklmoore.com/notes/rounding-in-javascript/
我已经做了这个功能。它工作正常,但返回字符串。
function show_float_val(val,upto = 2){
var val = parseFloat(val);
return val.toFixed(upto);
}
该方法使用定点表示法设置数字格式。
toFixed()
这是语法
numObj.toFixed([digits])
digits 参数是可选的,默认为 0。返回类型是字符串而不是数字。但是您可以使用以下命令将其转换为数字
numObj.toFixed([digits]) * 1
它还可以抛出异常,例如 ,TypeError
RangeError
以下是浏览器中的完整详细信息和兼容性。
number.parseFloat(2)
有效,但它返回一个字符串。
如果要将其保留为数字类型,可以使用:
Math.round(number * 100) / 100
评论
您可以尝试混合 和 .Number()
toFixed()
将您的目标号码转换为带有 X 位数字的漂亮字符串,然后将格式化的字符串转换为数字。
Number( (myVar).toFixed(2) )
请参阅以下示例:
var myNumber = 5.01;
var multiplier = 5;
$('#actionButton').on('click', function() {
$('#message').text( myNumber * multiplier );
});
$('#actionButton2').on('click', function() {
$('#message').text( Number( (myNumber * multiplier).toFixed(2) ) );
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<button id="actionButton">Weird numbers</button>
<button id="actionButton2">Nice numbers</button>
<div id="message"></div>
评论
let a = 0.0500
a.toFixed(2);
//output
0.05
评论
"0.05"
还有一个 API 可以根据您的区域设置值设置小数的格式。这一点很重要,特别是如果小数点分隔符不是点“.”而是逗号“,”,就像德国的情况一样。Intl
Intl.NumberFormat('de-DE').formatToParts(0.05).reduce((acc, {value}) => acc += value, '');
请注意,这将四舍五入到最多 3 位小数,就像上面建议的函数在默认情况下一样。如果要自定义该行为以指定小数位数,可以使用最小和最大小数位数选项:round()
Intl.NumberFormat('de-DE', {minimumFractionDigits: 3}).formatToParts(0.05)
您可以像这样设置小数点的长度:toFixed
let number = 6.1234
number.toFixed(2) // '6.12'
但是返回一个字符串,如果根本没有小数点,它将添加冗余零。toFixed
number
let number = 6
number.toFixed(2) // '6.00'
为避免这种情况,您必须将结果转换为数字。您可以使用以下两种方法执行此操作:
let number1 = 6
let number2 = 6.1234
// method 1
parseFloat(number1.toFixed(2)) // 6
parseFloat(number2.toFixed(2)) // 6.12
// method 2
+number1.toFixed(2) // 6
+number2.toFixed(2) // 6.12
如果您需要 2 位数字而不是字符串类型,我使用这种方式。
const exFloat = 3.14159265359;
console.log(parseFloat(exFloat.toFixed(2)));
float_num = parseFloat(float_num.toFixed(2))
评论