解析为带有 2 位小数的浮点数

Posted

技术标签:

【中文标题】解析为带有 2 位小数的浮点数【英文标题】:Parse to float with 2 decimal places 【发布时间】:2016-10-19 05:24:27 【问题描述】:

我需要对从 Web 服务收到的带有 2 位小数的值进行四舍五入。为此,我使用此方法 toFixed 和 parseFloat,因为我需要浮点数中的最终值。 但是,当我有这个值“5.5000000”时,他会向我显示只有一位小数的值“5.5”...

我就是这样做的:

var num = 5.5000000;
var n = num.toFixed(2);
var numFinal = parseFloat(n);

【问题讨论】:

如果您有一个数字并且想要一个字符串,则不需要parseFloat(),因为该函数的作用正好相反(从字符串转换为数字)。 但是 toFixed 方法返回一个字符串,我想要一个浮点数 "5.5000000" 就是当您打印它时,它恰好是如何显示的。浮点数的内部基数 2 表示和给定基数 10 表示中的小数之间没有直接转换。 @sampaioPT,参考***.com/a/2283670/1746830 感谢@ÁlvaroGonzález 的回复!现在我明白了! (我欠你一杯啤酒;)) 【参考方案1】:

你必须在parseFloat之后调用toFixed

parseFloat(yourString).toFixed(2)

【讨论】:

var newString = ... 当我使用“toFixed”方法时,它返回一个字符串 -> w3schools.com/jsref/jsref_tofixed.asp 并且我希望最终变量中有一个浮点数。不过感谢您的回复 具有 2 个小数位的浮点数是格式化浮点值,即将其转换为字符串。如果您想使用浮点值本身,则不需要剥离其余的浮点数。【参考方案2】:

你可以这样做

   /**
       * Convert the value to the Number with the precision.
       * @param   Number value         value to be converted
       * @param   Number [precision=0] number of decimal places
       * @returns Number converted number.
       */
      function toNumber (value, precision) 
        precision = precision || 0;
        if (precision === 0) 
          return value * 1;
         else 
          return Number((value * 1).toFixed(precision));
        
      

【讨论】:

@Hitesk Kumar 感谢您的回复。但是,当我有这个值 5.5000004 时,输出它是 5.5,只有一位小数,我想要像这样 5.50 的 2 位小数【参考方案3】:

简短回答:在 JS 中没有办法让 Number 数据类型值在小数点后带有尾随零。

长答案:它是 javascript 的 toFixed 或 toPrecision 函数的属性,用于返回字符串。原因是 Number 数据类型不能有像 a = 2.00 这样的值,它总是会删除小数点后的尾随零,这是 Number 数据类型的内置属性。因此,要在 JS 中实现上述目标,我们有 2 个选项

    将数据用作字符串或 同意在 2.50 -> 2.5 的末尾使用大小写“0”截断值。数字小数点后不能有尾随零

【讨论】:

以上是关于解析为带有 2 位小数的浮点数的主要内容,如果未能解决你的问题,请参考以下文章

输出保留12位小数的浮点数

1.1编程基础之输入输出——05:输出保留12位小数的浮点数

奥赛一本通1025:保留12位小数的浮点数

什么是浮点数格式?

1.1编程基础之输入输出——04:输出保留3位小数的浮点数

c++中如何输出保留三位小数的浮点数