将字符串转换为javascript中的整数或浮点数
如果我不知道变量是整数数字还是小数数字类型,是否有直接的方法将字符串解析为整数或浮点数?将字符串转换为javascript中的整数或浮点数
a = '2'; // => parse to integer
b = '2.1'; // => parse to float
c = '2.0'; // => parse to float
d = 'text'; // => don't parse
编辑:看来我的问题缺乏必要的背景:我想要做一些计算,而不会丢失原始格式(原始格式,从而意味着整数与浮点我不在乎原小数的。地方):
实施例:
String containing the formatted number ('2') => parse to number (2.0) => do some calculations (2.0 + 1 = 3.0) => restore "original format" ('3' and not '3.0')
如果输入为2.0,而不是,有用的结果将是 '3.0'(不是 '3')。
这就是我最终解决它的方法。我没有发现任何其他的解决办法,而不是变量类型添加到变量...
var obj = {
\t a: '2',
\t b: '2.1',
\t c: '2.0',
\t d: 'text'
};
// Explicitly remember the variable type
for (key in obj) {
var value = obj[key], type;
if (isNaN(value) || value === "") {
type = "string";
}
else {
if (value.indexOf(".") === -1) {
type = "integer";
}
else {
type = "float";
}
value = +value; // Convert string to number
}
obj[key] = {
value: value,
type: type
};
}
document.write("<pre>" + JSON.stringify(obj, 0, 4) + "</pre>");
将数字数据与1相乘的字符串。您将获得数字值数据值。
var int_value = "string" * 1;
在你的情况
a = '2' * 1; // => parse to integer
b = '2.1' * 1; // => parse to float
c = '2.0' * 1; // => parse to float
d = 'text' * 1; // => don't parse //NaN value
对于最后一个,你会得到NaN
值。手动处理NaN值
这看起来比我们接受的解决方案更好,对我而言效果很好。 – alberto2000
即使与JSON.parse相比,这也是迄今为止最快的方法。 – Ravenstine
为什么你wan't解析? Javascript有动态类型。而且,它唯一的数字类型是双倍的。 –
@david a .:谢谢你指出。我没有意识到这一点。如果只有一种数字类型,仍然想知道为什么JavaScript中有两个函数(parseInt,parseFloat)。 – am2124429
我认为不同之处在于两个解析输入的方式 - parseInt()只取其整数部分,而parseFloat()取小数(也可能取指数)。但是,它们都返回相同的类型(数字,实际上是一个浮点类型)。请参阅JS编号规格:http://www.ecma-international.org/ecma-262/6.0/index.html#sec-terms-and-definitions-number-value。 MSDN在这里提到了同样的事情:https://msdn.microsoft.com/library/7wkd9z69(v=vs.94).aspx#Anchor_4 –