2 回答
TA贡献1810条经验 获得超4个赞
如果输入是整数或浮点数,那么你想要的是不可能的。在整数或浮点数上没有“前导零”这样的东西。如果你使用前导零来创建一个整数文字,它就会变成一个八进制文字(改变这个值;这就是为什么n = 0456456456
它的行为方式,0456456456
只是八进制的拼写方式79322414
)。如果您使用前导零解析一个字符串来生成一个整数,则只需忽略它们(parseInt('000123')
生成相同的值parseInt('123')
,即值123
)。这就是为什么016540
变成257
:八进制文字相当于十进制文字7520
,并将其反转并解析回整数忽略前导0
,离开257
。
您不能保留这样的前导零,因为它们不存在于字符串形式之外。并且你将在逆转时失去尾随零,因为它们在新形式中成为前导零。
要么专门使用字符串,要么接受你将丢失前导零。
我会注意到你在注释中的规则指定:
//leading zeros should be removed
所以它在这里按预期工作。
TA贡献1891条经验 获得超3个赞
你必须把它作为一个字符串传递,因为0你的数字中的前导不会被解释为这样。
例如:
// Will always be evaluated as 1
let foo = 001;
console.log(foo);
如果你提供n的string,你可以做这样的:
reverseNumberWithBuiltInFunctions = n => parseFloat(n.toString().split('').reverse().join(''));
console.log(reverseNumberWithBuiltInFunctions('0456456456'))
console.log(reverseNumberWithBuiltInFunctions('056985'))
添加回答
举报