解析为带有 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 位小数的浮点数的主要内容,如果未能解决你的问题,请参考以下文章