问题
我需要返回 0.66 格式的数字(来自包含前导零的输入值,例如 0.66)
必须以整数形式返回,小数点作为第一个字符。
JavaScript 中的什么方法可以帮助我做到这一点?
我尝试了什么?
我尝试将其转换为 String() 并返回到 parseInt(),但包含小数点会使其返回 NaN。
我尝试向我的 parseInt() 添加各种基数 (10, 16) - 也不成功
示例代码
const value = 0.66;
if(value < 1) {
let str = value.toString().replace(/^0+/, '');
// correctly gets '.66'
return parseInt(str)
}
//result NaN
期望
我期望输出删除了前导 0 的值 例如0.45 --> .45 或 0.879 --> .879
当前观察
输出为 NaN
我尝试了一个快速解决方案,你可以尝试这样做:
let a = 0.45;
// split on decimal, at index 1 you will find the number after decimal
let b = a.toString().split('.')[1];
问题#1: 0.66 不是整数。 Integer 是整数,这是浮点数。
问题#2: JavaScript 中不能有以小数点开头的数字。 即使您将
parseInt
更改为 parseFloat
,结果仍然会返回 0.66。
你所要求的是不可能的,如果你想要一个数字以小数点开头,那么它必须是一个字符串。
受访者的观点是正确的,即在保留数字类型的情况下无法完成此操作。但如果你想要的只是显示,我认为像“0.6652342”这样的数字最简单的答案将是使用 substring() 方法,这也可以让你同时进行精度:
const num = 0.6652342
const display = num.toString().substring(1, 5)
// '.665'
(很多注意事项:您的数字是否可以全部为小数并且< 1, you may need to pad with extra zeros, etc.)