JS - 将数字格式化为两位小数,不进行四舍五入。

4

我希望将数字格式化为两位小数,但不进行四舍五入。因此,我排除了toFixed()函数。

我尝试过以下方式:

a = 1,809999
b = 27,94989

a = Math.floor(a * 100) / 100; --> 1,8
b = Math.floor(b * 100) / 100; --> 27,94

OR

a = Number(a.toString().match(/^\d+(?:\.\d{0,2})?/)); --> 1,8
b = Number(b.toString().match(/^\d+(?:\.\d{0,2})?/)); --> 27,94

很不幸,a的第二位小数为零被删除了,我应该怎么做才能保留它并使a等于1.80呢?

谢谢!


你将四舍五入和格式化混淆了。 - Dave Newton
尝试使用以下代码:a.toFixed(2) // 这将保留两位小数 - Kop4lyf
可能是JavaScript:使用正好两个小数格式化数字的重复问题。 - GillesC
5个回答

4
(Math.floor(a * 100) / 100).toFixed(2);

使用toFixed(2)方法!

JSFIDDLE DEMO


1
你可以尝试这样做:
a= a.toString().slice(0, (a.indexOf("."))+3); 

JSFIDDLE演示


你忘记了你的一行代码中第二个a是数字。解决方案是 a = a.toString(); a.slice(0, (a.indexOf("."))+3); 或者 a = a.toString().slice(0, (a.toString().indexOf("."))+3); - user3439968

0

对数字进行四舍五入是改变其值的操作,应该使用数学运算(Math.floor,Math.ceil,Math.round等)来完成。

格式化数字是关于如何将数字显示给人类用户的(例如日期格式化)。

Javascript没有可接受的本地工具来进行数字格式化。

您可以随时尝试四舍五入以使JavaScript按您想要的方式打印数字,但最终会编写大量可能存在错误的代码。

我建议使用库来格式化您的数字 http://numeraljs.com/

numeral(number).format('0.00');

0

只需要使用toFixed()并传递数字2,然后它会显示小数点后两位,就像下面这样

a = 1,809999
b = 27,94989

a = Math.floor(a * 100) / 100; 
b = Math.floor(b * 100) / 100; 

$(".testa").text(a.toFixed(2)); //see here.
$(".testb").text(b.toFixed(2)); //see here.

HTML:

<div class="testa"></div>
<br>
    <div class="testb"></div>

希望这能对你有所帮助。同时请查看这个 jsfiddle 链接 http://jsfiddle.net/RGerb/394/


0
myFunction(value: number){
let x = value + ''; 
  var a =  x.lastIndexOf('.')>=0?parseFloat(x.substr(0,x.lastIndexOf('.')+(3))):value;
  var am = a.toFixed(2)
  console.log("Output: " + am);
  return am;

}

<button (click)="myFunction(656565.9668985)">My Function</button>

Output: 656565.96

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接