繁体   English   中英

如何将字符串解析为 integer 并保留小数位(如果它们为零)?

[英]How can I parse a string as an integer and keep decimal places if they are zeros?

我有这些字符串:“59.50”和“30.00”

我需要做的是将它们转换为整数,但在末尾保留尾随零以有效返回:

59.50
30.00

我试过了:

Math.round(59.50 * 1000) / 1000
Math.round(30.00 * 1000) / 1000

但结束了

59.5
30

我假设我需要使用与 Math.round 不同的方法,因为它会自动切断尾随零。

我需要将它们保留为整数,因为它们需要与其他整数相乘并保留两位小数。 我认为这会相当简单,但经过大量搜索后,我似乎无法找到完全符合我需要的解决方案。

谢谢!

你的前提是有缺陷的。 如果你解析一个数字,你就是把它转换成它的数字表示,根据定义,它没有尾随零。

另一个缺陷是您似乎认为可以将两个数字相乘并保持与原始数字相同的小数位数。 这几乎没有意义。

听起来这可能是一个 XY 问题,而您真正想要做的只是在结果中保留两位小数。

如果是这样,您可以使用.toFixed()

 var num = parseFloat("59.50"); var num2 = parseFloat("12.33"); var num3 = num * num2 console.log(num3.toFixed(2)); // 733.64

每当您想显示变量的值时,请使用Number.prototype.toFixed() 此函数采用一个参数:要保留的小数位数。 它返回一个字符串,因此请在向用户查看值之前执行此操作。

console.log((123.4567).toFixed(2)); // logs "123.46" (rounded)

保留小数 - 将字符串乘以 1 示例:"33.01" * 1 // 等于 33.01

似乎您正在尝试保留相同的浮点数,因此更好的解决方案是

parseFloat(string).toFixed(string.split('.')[1].length);

如果你想要带小数点的数字,你不是在谈论整数(整数)而是浮点数。

在 Javascript 中,所有数字都表示为浮点数。

您不需要尾随零来进行计算。 只要你有所有的有效数字,你就没事。

如果要使用给定数量的十进制值输出结果,可以使用 toFixed 方法将数字转换为格式化字符串:

var num = 1.5
var output = num.toFixed(2) // '1.50'
// the number is rounded
num = 1.234
output = num.toFixed(2) // '1.23'
num = 1.567
output = num.toFixed(2) // '1.57'

下面是对 toFixed 的更详细描述: https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM