Javascript 将数字四舍五入到最接近的9

Javascript 将数字四舍五入到最接近的9,javascript,algorithm,Javascript,Algorithm,我有一个数字99,我想把它乘以1.2,得到118.8,然后把它四舍五入到最接近的9,得到119 另一个例子是119除以1.2=99.16,四舍五入到最接近的9等于99 我开始这样做: var number = 99 var numberMultiplied = number * 1.2 var numberRounded = Math.round(numberMultiplied / 9)*9 console.log(numberRounded ) 但它给了我117而不是119。。。我做错了什

我有一个数字99,我想把它乘以1.2,得到118.8,然后把它四舍五入到最接近的9,得到119

另一个例子是119除以1.2=99.16,四舍五入到最接近的9等于99

我开始这样做:

var number = 99
var numberMultiplied = number * 1.2
var numberRounded = Math.round(numberMultiplied / 9)*9
console.log(numberRounded )

但它给了我117而不是119。。。我做错了什么?

首先,将数字四舍五入到最接近的第十位:

Math.round(++numberMultiplied / 10) * 10
然后从中减去1

var编号=99
var numberMultiplied=数字*1.2
var numberRounded=数学整数(++numberMultiplied/10)*10-1

console.log(numberRounded)
您需要做的是将数字偏移1,并利用您已经知道如何四舍五入到最接近的10:

var numberRounded = Math.round((numberMultiplied + 1) / 10)*10 - 1;
您有两个案例: 1:如果乘以的数字是173,则数字更接近169 2:如果乘以的数字是177,则该数字更接近179

你可以这样做:

var divNumber = multipliedNumber / 10;
var modNumber= multipliedNumber % 10 ;
if(modNumber < 5){ divNumber = divNumber * 10 - 1 }else{ divNumber = divNumber * 10 + 9 }
var divNumber=multiplednumber/10;
var modNumber=乘数%10;
如果(modNumber<5){divNumber=divNumber*10-1}否则{divNumber=divNumber*10+9}

119不是9的倍数。你是真的在寻找9的倍数,还是只希望最后一个数字是9?“我做错了什么?”-代码四舍五入到9的最接近倍数我要加的唯一一件事是你需要得到两个以9结尾的数字,然后检查哪一个最接近原始数字。我认为如果原始数字在四舍五入之前偏移,这会更合理,然后往回偏移。@sami结果你所说的原始数字被偏移是什么意思?@gumakettell这个答案后来被更正成了正确的偏移(它是
+
之前的
+
)。四舍五入到最接近的9的问题与四舍五入到最接近的10的问题相同,如果数字被关1,被偏移1。简单地说,您需要在四舍五入之前添加一个值,然后再减去相同的值,例如在这个答案中。