如果我不知道它是哪一个,我应该如何将数字转换为浮点数或整数?

时间:2009-10-20 21:35:25

标签: javascript

我正在研究一个以字符串形式读入用户输入的程序,其中包括读取一些数字和运算符。

我现在正在尝试确定如何解析一个我知道是数字的字符串,但我不知道它是浮点数还是整数。

我有一些想法:

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);
}

我可以想到其他一些方法。

哪种方式似乎最好?

5 个答案:

答案 0 :(得分:5)

想要用户输入什么? parseFloat也会解析整数。您可以随时使用它,并且在您实际上想要限制自己使用整数的情况下,在结果上使用Math.round()

答案 1 :(得分:2)

至少在webkit上(我现在打开),parseFloatparseInt都返回数字,唯一的区别是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)

这取决于你需要多少严谨性。

你要把它存放在哪里?如果小数点后面没有任何内容,您是否打算切换类型?或者它真的只是一个看起来像整数的浮点数?