Javascript 如何删除尾随小数而不进行取整?

Javascript 如何删除尾随小数而不进行取整?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,例如,我有一个数字123.429。如何删除尾随的小数而不舍入到小数点后两位。 因此,我需要数字最多为两个d.p.,即123.42 显然toFixed()方法或Math.round(num*100)/100不能在这种情况下使用。您可以将其转换为字符串,然后简单地截断字符串小数点后的两位,例如: var s = String(123.429); s.substring(0, s.indexOf('.') + 3); // "123.42" 请注意,如果您将最后一个字符串转换回一个数字,并不能

例如,我有一个数字
123.429
。如何删除尾随的小数而不舍入到小数点后两位。 因此,我需要数字最多为两个d.p.,即
123.42


显然
toFixed()
方法或
Math.round(num*100)/100
不能在这种情况下使用。

您可以将其转换为字符串,然后简单地截断字符串小数点后的两位,例如:

var s = String(123.429);
s.substring(0, s.indexOf('.') + 3);  //   "123.42"
请注意,如果您将最后一个字符串转换回一个数字,并不能保证它可以精确地表示为小数点后两位——计算机浮点数学不是这样工作的。

var number=parseInt(“”+(num*100))/100;

您想要的函数是
Math.floor(x)
删除小数而不进行取整(因此
floor(4.9)=4

var number=Math.floor(num*100)/100


编辑:我想更新我的答案,因为实际上,这会以负数取整:

var Math.floor(-1.456 * 100) / 100;
-1.46

然而,自JavaScript6以来,他们引入了一个函数,该函数在不舍入的情况下截断为int,正如预期的那样。您可以使用与我建议使用的
Math.floor()
相同的方法:


或者,awe提出的
parseInt()
方法也可以工作,尽管它需要字符串分配。

让我们将变量名设为“num”


num变量的值将为12.42

您的解决方案有什么问题?为了理解我们不能建议的内容,您能解释一下为什么不能使用
toFixed
Math.round()
?你是怎么得到这个数字的?有没有办法掩盖后面的小数?我不想总结我在这个问题中具体说明的原因。e、 g 123.429,我希望它是123.42!正如OP所说,toFixed()方法或Math.round(num*100)/100不能用于此方法situation@FabrizioCalderanOP是错误的-
。toFixed
当然可以使用。@FabrizioCalderan OP就是这么想的。这不是(希望)他们必须遵循的任意规则。据我所知,这可能是一个代码挑战。或者他只是一个想知道另一种方法的学生——只要说math.round()就可以了——这是OP不想要的。我的方法不会取整-只是“剪辑”它。不是向下投票者,而是在截断之前先应用
.toFixed()
有什么意义?您可以直接强制转换为字符串。@Juhana强制转换为字符串可能会产生指数格式
。toFixed()
在这方面对您没有帮助。@Juhana-hmm,所以它没有帮助。will amend.Math.floor将数字精确地四舍五入,这对我来说绝对没有帮助。“floor()方法将一个数字向下舍入到最接近的整数,并返回结果。”是的……但是,由于您将乘以100,然后在
floor()
函数之后进行除法,因此保留小数。您未进行舍入指定-这将按照您的要求将123.429变为123.42。Ic.我的错误。我正在寻找一种不同的方法来解决这个问题。好的,没问题。我将把我的答案留在这里,以防有人搜索同一个问题。我更新了答案,因为对于负数,它从零舍入。但是,由于Javascript 6,
Math.trunc()
可供使用,因此我建议使用它而不是
Math.floor()
var number = Math.trunc(num * 100) / 100;
var num = 123.429;
num=num*100;
num=num.toString();
num=num.split(".");
num=parseInt(num[0]);
num=num/100;