【发布时间】:2019-11-25 13:13:19
【问题描述】:
我在尝试在 Javascript 中添加前导零和小数同时保持数字格式时遇到了一些麻烦。我能够以字符串的形式成功执行此操作,但是当尝试使用 parseInt() 时,它会去除前导零和小数并转换为整数。
我要达到的最终目标如下:
0.50000.0500
而且,如果给出的数字更少:
0.500.05
我有一个函数,它接受一个数字和一个可选的布尔值来确定是否执行上述操作,使用 JS 开关:
function formatTrainingDigit(number, decimals) {
var numberSplit = number.toString().split('')
if (decimals) {
switch (numberSplit.length) {
case 1:
return '0.0' + number // TODO: this returns string, change to number.
break;
case 2:
return '0.' + number // TODO: this returns string, change to number.
break;
case 3:
return '0.' + number // TODO: this returns string, change to number.
break;
case 4:
return '0.' + number // TODO: this returns string, change to number.
break;
default:
return 0.00
}
} else {
switch (numberSplit.length) {
case 1:
return 0,0,0,parseInt(numberSplit[0])
break;
case 2:
return 0,0,parseInt(numberSplit[0]),parseInt(numberSplit[1])
break;
case 3:
return 0,parseInt(numberSplit[0]),parseInt(numberSplit[1]),parseInt(numberSplit[2])
break;
case 4:
return parseInt(numberSplit[0]),parseInt(numberSplit[1]),parseInt(numberSplit[2]),parseInt(numberSplit[3])
break;
default:
return 0,0,0,0
}
}
}
我会将值传递给函数:formatTrainingDigit(5000, false) 或 formatTrainingDigit(50, true)
但是,当尝试对我返回的函数执行 parseInt() 时,它会删除所有内容,例如:
这有效:console.log(formatTrainingDigit(5000, true)) // returns string
这失败了:console.log(parseInt(formatTrainingDigit(5000, true))) // returns number zero
【问题讨论】:
-
为什么不使用
Number.prototype.toFixed -
如果您需要浮点/十进制值,为什么要使用
parseInt?你试过用parseFloat吗? -
parseFloat()也会去除多余的前导零。 -
@MaheerAli 这给了我
5000.00我在使用developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 时需要0.5000
标签: javascript jquery node.js function