JavaScript将float显示为2位小数

时间:2010-07-02 03:21:25

标签: javascript floating-point precision

我想将数字显示为2位小数。

我以为我可以在JavaScript中使用toPrecision(2)

但是,如果数字为0.05,我会获得0.0500。我宁愿保持不变。

JSbin上查看。

这样做的最佳方式是什么?

我可以考虑编写一些解决方案,但我想(我希望)内置这样的东西?

12 个答案:

答案 0 :(得分:460)

float_num.toFixed(2);

注意: toFixed()会在必要时用零填充或填充以满足指定的长度。

答案 1 :(得分:47)

您可以使用toFixed函数执行此操作,但它是buggy in IE。如果您需要可靠的解决方案,请查看我的答案here

答案 2 :(得分:17)

尝试使用toFixed代替toPrecision

答案 3 :(得分:7)

不知道我是怎么回答这个问题的,但是即使已经问了很多年了,我想添加一个快速而简单的方法,我也不会让我失望:

inotify_event

答案 4 :(得分:3)

number.parseFloat(2)有效,但是它返回一个字符串。

如果要将其保存为数字类型,可以使用:

Math.round(number * 100) / 100

答案 5 :(得分:3)

您可以尝试混合使用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>

答案 6 :(得分:2)

let a = 0.0500
a.toFixed(2);

//output
0.05

答案 7 :(得分:1)

  

toFixed()方法使用定点表示法格式化数字。

这是语法

numObj.toFixed([digits])

digits 参数是可选的,默认为0.并且返回类型是字符串而不是数字。但您可以使用

将其转换为数字
numObj.toFixed([digits]) * 1

它还可以抛出TypeErrorRangeError

等异常

以下是浏览器中的full detail和兼容性。

答案 8 :(得分:0)

我已经完成了这个功能。它工作正常,但返回字符串。

function show_float_val(val,upto = 2){
  var val = parseFloat(val);
  return val.toFixed(upto);
}

答案 9 :(得分:0)

toFixed 函数用于将浮点数限制为javascript中的小数点后2位

two_decimal_num = parseFloat(3.14159.toFixed(2));
console.log(two_decimal_num)

答案 10 :(得分:0)

还有 Intl API 可根据您的区域设置值格式化小数。如果小数点分隔符不是点“.”,这一点尤其重要。而是逗号“,”,就像在德国一样。

Intl.NumberFormat('de-DE').formatToParts(0.05).reduce((acc, {value}) => acc += value, '');

请注意,这将四舍五入到最多 3 个小数位,就像上面在默认情况下建议的 round() 函数一样。如果您想自定义该行为以指定小数位数,可以选择最小和最大小数位数:

Intl.NumberFormat('de-DE', {minimumFractionDigits: 3}).formatToParts(0.05)

答案 11 :(得分:0)

使用 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