【发布时间】:2021-07-20 23:11:00
【问题描述】:
我希望我的函数将字符串或数字格式化为小数点后 X 位的十进制数。我的问题是,当我将3.0004 传递给我的函数时,我得到3。我已阅读文档,似乎每当parseFloat 找到. 时,例如
它返回直到该字符的值,忽略无效 字符和后面的字符。
我知道它是这样做的,但是我该如何返回 3.00 呢?我希望我的函数总是返回一个小数点后带有数字的数字。我使用 parseFloat 的原因是因为我希望它返回一个数字或 null。
这是我的实现
const toDecimal = (number: number | string, digits: number = 2): number | null => {
switch (typeof number) {
case 'number':
return parseFloat(number.toFixed(digits));
case 'string':
const parsedDecimal = parseFloat(number);
return isNaN(parsedDecimal)
? null
: parseFloat(parsedDecimal.toFixed(digits));
default:
return null;
}
}
toDecimal(3.0004) // will return 3
【问题讨论】:
-
数值隐含
3和3.0和3.00等等。尾随零是隐含的并且无限地继续。它们是否显示完全取决于数字到字符串的转换。它们只会在值以字符串形式呈现时出现,并且只有在转换添加它们时才会出现。
标签: javascript typescript