将字符串解析为十进制不会返回十进制JavaScript

时间:2018-06-20 15:14:30

标签: javascript

我刚开始编写JavaScript,正在尝试将两个值从字符串转换为数字,但是,我尝试执行以下方法,但似乎都无效。  示例:

const num = parseInt('100.00') // returns 100
const num = Number('100.00') // returns 100
const num = +'100.00'; // returns 100

我需要返回100.00,因为我去了其他似乎没有帮助的类似职位,感谢所有知识!

3 个答案:

答案 0 :(得分:1)

在Javascript中,所有内容都是Number,它是双精度浮点64位数字(=十进制)。

100.00等于100,因此显示100。

答案 1 :(得分:1)

在我看来,您尝试过的所有方法都有效。

内部使用JavaScript stores all numbers using the floating point format。显示值时,它将使用所需的最小小数位数。

对于整数0,这是100100.00仍为100,在小数点后添加任意数量的0不会改变其值。


推荐的解析看起来像数字的字符串的方法是使用Number.parseInt()Number.parseFloat()

parseFloat()仅识别以基数10写的数字,但是parseInt()试图通过分析输入字符串的第一个字符来检测基数。它使用documentation page about numbers中描述的规则自动识别以281016为基数的数字。这就是为什么建议始终将第二个参数传递给parseInt()以避免任何歧义的原因。

关于您的关注,即使结尾数字为0,也可以使用Number.toFixed()强制使用一定数量的十进制数字来表示:

const num = parseInt('100.00');
console.log(num);                 // prints '100'
console.log(num.toFixed(2));      // prints '100.00'

答案 2 :(得分:1)

您的要求是不可能的,小数点100不能表示为数字100.00,您只能在toFixed的帮助下将其表示为字符串。

var num = 100;
var strNum = num.toFixed(2); // in this case you have a string instead of a number

console.log(typeof num, num);
console.log(typeof strNum, strNum);