JS - 格式编号,带小数点后2位未舍入

时间:2015-04-29 10:36:34

标签: javascript jquery

我会格式化一个带有2位小数的数字而不进行舍入。 所以我排除了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的第二个小数是零,这被删除了,我怎么能保持它并且= 1.80? 谢谢

5 个答案:

答案 0 :(得分:4)

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:realmObject options:NSJSONWritingPrettyPrinted error:&writeError];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 

使用toFixed(2)!

<强> JSFIDDLE DEMO

答案 1 :(得分:1)

您可以尝试这样:

a= a.toString().slice(0, (a.indexOf("."))+3); 

<强> JSFIDDLE DEMO

答案 2 :(得分:0)

舍入数字是关于改变它的值,应该用数学运算完成(Math.floor,Math.ceil,Math.round,...)。

格式化编号,是关于如何向人类用户显示数字(如日期格式)。

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

您可以随时使用舍入来使javascript以您想要的方式打印数字,但最终会编写很多(可能是错误的)代码。

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

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

答案 3 :(得分:0)

只需要使用toFixed()并将数字传递为2然后显示之后。两个十进制像bello

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/

答案 4 :(得分: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