Javascript 如何将字符串解析为整数并保留小数位数(如果是零)?

Javascript 如何将字符串解析为整数并保留小数位数(如果是零)?,javascript,math,Javascript,Math,我有这些字符串:“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不同的方法,因为这会自动删除尾随的零 我需要将它们保持为整数,因为它们需要与其他整数相乘,并保持两个小数点。我不认为这将是相当直接的,但经过大量的搜索

我有这些字符串:“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不同的方法,因为这会自动删除尾随的零

我需要将它们保持为整数,因为它们需要与其他整数相乘,并保持两个小数点。我不认为这将是相当直接的,但经过大量的搜索,我似乎无法找到一个解决方案,确切地说,我需要什么


谢谢

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

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

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

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

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

如果是这样,您可以使用
.toFixed()
执行以下操作:

var num=parseFloat(“59.50”); var num2=parseFloat(“12.33”); 变量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的更详细描述:

要保留小数,请将字符串乘以1
例如:“33.01”*1//等于33.01

如果将字符串解析为整数,则根据定义将小数部分切掉。当显示数字以显示小数点后两位时,59.50不是整数
toFixed(2)
。数字不能有尾随零,但是你可以对字符串进行乘法而不会产生任何问题……这些是浮点数而不是整数,但我认为你应该这样做:
Math.floor(parseFloat(“59.50”).toFixed(2)如果您只需要2引导0。谢谢,这很好地解释了这一点,我解决了这个问题。如果小数的数量是动态的(对于某些货币,小数可以是2,对于其他货币,小数可以是3)@NagendraVarma,那么使用动态值而不是
2