删除小数点前的前导 0 并以数字形式返回 - javascript

问题描述 投票:0回答:3

问题

我需要返回 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

javascript numbers decimal-point
3个回答
2
投票

我尝试了一个快速解决方案,你可以尝试这样做:

let a = 0.45;
// split on decimal, at index 1 you will find the number after decimal
let b = a.toString().split('.')[1];

1
投票

问题#1: 0.66 不是整数。 Integer 是整数,这是浮点数。

问题#2: JavaScript 中不能有以小数点开头的数字。 即使您将

parseInt
更改为
parseFloat
,结果仍然会返回 0.66。

你所要求的是不可能的,如果你想要一个数字以小数点开头,那么它必须是一个字符串。


0
投票

受访者的观点是正确的,即在保留数字类型的情况下无法完成此操作。但如果你想要的只是显示,我认为像“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.)

© www.soinside.com 2019 - 2024. All rights reserved.