我正在研究一个以字符串形式读入用户输入的程序,其中包括读取一些数字和运算符。
我现在正在尝试确定如何解析一个我知道是数字的字符串,但我不知道它是浮点数还是整数。
我有一些想法:
function parseNumber(number)
{
if (number % 1 == 0)
return parseInt(number);
else
return parseFloat(number);
}
或
function parseNumber(number)
{
if (number.indexOf(".") != -1)
return parseFloat(number);
else
return parseInt(number);
}
或
function parseNumber(number)
{
if (!number.matches(/([0-9]+.[0-9]+)/))
return parseInt(number);
else
return parseFloat(number);
}
我可以想到其他一些方法。
哪种方式似乎最好?
答案 0 :(得分:5)
您想要用户输入什么? parseFloat
也会解析整数。您可以随时使用它,并且在您实际上想要限制自己使用整数的情况下,在结果上使用Math.round()
。
答案 1 :(得分:2)
至少在webkit上(我现在打开),parseFloat
和parseInt
都返回数字,唯一的区别是parseInt
会切断通过“。”的任何内容。
要在javascript中获取对象的类型,请尝试使用此类
a = parseFloat("55.5")
a.constructor.toString() // returns Number
b = parseFloat("55")
b.constructor.toString() // returns Number
c = parseInt("55")
c.constructor.toString() // returns Number
答案 2 :(得分:1)
为什么你需要在分流码算法的整数和双精度之间做出改变?两者都是数字,据我所知,这些都很重要。在确定您的令牌是数字后,只需使用parseFloat()
。
答案 3 :(得分:1)
JavaScript只有一种数字类型Number。在内部,它表示为64位浮点。
与大多数其他编程语言不同,没有单独的整数类型,因此5和5.0是相同的值。
要将字符串转换为数字,我只需使用一元加运算符:
var numberString = "10";
var numberValue = +numberString;
答案 4 :(得分:0)
这取决于你需要多少严谨性。
你要把它存放在哪里?如果小数点后面没有任何内容,您是否打算切换类型?或者它真的只是一个看起来像整数的浮点数?