【问题标题】:Javascript - Converting a number to two decimal places while keeping zerosJavascript - 将数字转换为两位小数,同时保持零
【发布时间】:2017-07-20 14:26:48
【问题描述】:

我有没有小数位的数字,我想将其转换为两位小数(同时保留零)并保留其数字类型。 我试过这样:

$scope.invoice_data.form_data.items_shipping_handling = parseFloat(($scope.invoice_data.form_data.items_shipping_handling).toFixed(2));
console.log(typeof $scope.invoice_data.form_data.items_shipping_handling); 

但它 parseFloat 不考虑小数位是否为零。 因此,如果我有2,我想将其转换为2.00 //number。 感谢您的时间。我提到代码是有角度的,所以如果它是任何有角度的方式,我愿意接受建议。

详细信息:我不能简单地使用 toFixed(2) 我需要结果有小数位,但要保持其数字格式,toFixed() 将其转换为字符串。我需要它是数字类型的!

【问题讨论】:

  • 浮点数(从parseFloat 返回)没有“小数位数”。这是一个展示的东西 - 你已经知道如何做到这一点toFixed(2)。我不明白你的问题是什么?
  • toFixed 返回一个字符串,但由于您需要尾随 0,我认为此显示的格式并不重要?
  • 如果我使用 toFixed(2) 我将数字转换为我想保持其格式的字符串。我通过将字符串从 toFixed() 解析到 parseFloat 来尝试这个,但是像 2.00 这样的东西被返回为 2。我想得到 2.00 并且数字格式不是字符串
  • @Huangism 这很重要,因为我在数学计算中使用的结果......然后我返回视图,这些计算的结果以及带两位小数的格式化数字。
  • @Alphonse 然后在您进行计算时,将其转换回数字或使用不同的变量。计算时使用字符串显示和转换,或者使用2个var,一个显示一个计算

标签: javascript angularjs


【解决方案1】:

数字没有“小数位数”——它们在内部只是一系列 1 和 0。要将数字显示到指定的小数位数,您可以使用toFixed

var value = 2;
console.log(value.toFixed(2));

如果您尝试将一个数字四舍五入到一组小数位,一种方法是乘以 100,四舍五入,然后除以 100

var value = 2.123456
var rounded = Math.round(value*100)/100;
console.log(rounded);

【讨论】:

  • 正确答案 - 舍入是一个演示问题
【解决方案2】:

变量.toFixed(2)

doc here

  • 列表项

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-22
    • 1970-01-01
    • 1970-01-01
    • 2016-12-07
    相关资源
    最近更新 更多