如何将字符串解析为整数并保留小数位(如果它们为零)?
How can I parse a string as an integer and keep decimal places if they are zeros?
我有这些字符串:“59.50”和“30.00”
我需要做的是将它们转换为整数,但在末尾保留尾随零以有效 return:
59.50
30.00
我试过:
Math.round(59.50 * 1000) / 1000
Math.round(30.00 * 1000) / 1000
但结果是
59.5
30
我假设我需要使用不同于 Math.round 的方法,因为它会自动切断尾随零。
我需要将它们保留为整数,因为它们需要与其他整数相乘并保留两位小数。我认为这会相当简单,但经过大量搜索后,我似乎无法找到完全符合我需要的解决方案。
谢谢!
只要你想显示变量的值,使用Number.prototype.toFixed()
。该函数接受一个参数:要保留的小数位数。它 returns 一个字符串,所以在向用户查看值之前就这样做。
console.log((123.4567).toFixed(2)); // logs "123.46" (rounded)
你的前提是有缺陷的。如果你解析一个数字,你就是将它转换成它的数字表示,根据定义,它没有尾随零。
另一个缺陷是您似乎认为可以将两个数字相乘并保持与原始数字相同的小数位数。这几乎没有意义。
听起来这可能是一个 XY 问题,而您真正想要做的只是在结果中保留两位小数。
如果是这样,您可以使用 .toFixed()
:
var num = parseFloat("59.50");
var num2 = parseFloat("12.33");
var num3 = num * num2
console.log(num3.toFixed(2)); // 733.64
如果你想要带小数点的数字,你不是在谈论整数(整数)而是浮点数。
在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
要保留小数点 - 将字符串乘以 1
示例:“33.01”* 1 // 等于 33.01
似乎您正在尝试保留相同的浮点数,因此更好的解决方案是
parseFloat(string).toFixed(string.split('.')[1].length);
我有这些字符串:“59.50”和“30.00”
我需要做的是将它们转换为整数,但在末尾保留尾随零以有效 return:
59.50
30.00
我试过:
Math.round(59.50 * 1000) / 1000
Math.round(30.00 * 1000) / 1000
但结果是
59.5
30
我假设我需要使用不同于 Math.round 的方法,因为它会自动切断尾随零。
我需要将它们保留为整数,因为它们需要与其他整数相乘并保留两位小数。我认为这会相当简单,但经过大量搜索后,我似乎无法找到完全符合我需要的解决方案。
谢谢!
只要你想显示变量的值,使用Number.prototype.toFixed()
。该函数接受一个参数:要保留的小数位数。它 returns 一个字符串,所以在向用户查看值之前就这样做。
console.log((123.4567).toFixed(2)); // logs "123.46" (rounded)
你的前提是有缺陷的。如果你解析一个数字,你就是将它转换成它的数字表示,根据定义,它没有尾随零。
另一个缺陷是您似乎认为可以将两个数字相乘并保持与原始数字相同的小数位数。这几乎没有意义。
听起来这可能是一个 XY 问题,而您真正想要做的只是在结果中保留两位小数。
如果是这样,您可以使用 .toFixed()
:
var num = parseFloat("59.50");
var num2 = parseFloat("12.33");
var num3 = num * num2
console.log(num3.toFixed(2)); // 733.64
如果你想要带小数点的数字,你不是在谈论整数(整数)而是浮点数。
在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
要保留小数点 - 将字符串乘以 1 示例:“33.01”* 1 // 等于 33.01
似乎您正在尝试保留相同的浮点数,因此更好的解决方案是
parseFloat(string).toFixed(string.split('.')[1].length);