在 javascript 中将字符串转换为整数或浮点数
Convert string to either integer or float in 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”)。
将包含数字数据的字符串乘以 1。您将得到 Numeric 数据值。
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 值
最后我就是这样解决的。除了将变量类型添加到变量之外,我没有找到任何其他解决方案 ...
var obj = {
a: '2',
b: '2.1',
c: '2.0',
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>");
只需将其包裹在Number()
中
Number('123') === 123
Number('-123.456') === -123.456
您可以使用:
function parse(x){
return x==x*1?x*1:x
}
function parse(x){
return x==x*1?x*1:x
}
console.log(parse(1),typeof parse(1))
console.log(parse("1"),typeof parse("1"))
console.log(parse("1.1"),typeof parse("1.1"))
console.log(parse("1A"),typeof parse("1A"))
如果我不知道变量是类整数还是类小数,是否有直接的方法将字符串解析为整数或浮点数?
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”)。
将包含数字数据的字符串乘以 1。您将得到 Numeric 数据值。
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 值
最后我就是这样解决的。除了将变量类型添加到变量之外,我没有找到任何其他解决方案 ...
var obj = {
a: '2',
b: '2.1',
c: '2.0',
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>");
只需将其包裹在Number()
Number('123') === 123
Number('-123.456') === -123.456
您可以使用:
function parse(x){
return x==x*1?x*1:x
}
function parse(x){
return x==x*1?x*1:x
}
console.log(parse(1),typeof parse(1))
console.log(parse("1"),typeof parse("1"))
console.log(parse("1.1"),typeof parse("1.1"))
console.log(parse("1A"),typeof parse("1A"))