如何输出数字2.00作为完整的字符串?

时间:2013-08-08 12:42:20

标签: javascript floating-point

在此之前,我想说对不起。但这不重复。其他帖子的任何答案都有同样的问题。 JS中没有float或int(仅限数字)。当您执行isInt()功能时,2.00始终检测到true为整数。我希望2.00被检测为浮动。所以,我必须首先对它进行字符串化。

function isInt(i) {
    if ( i.toFixed ) {
        if ( i % 1 === 0 ) {
            return true; // the problem is 2.00 always detected true as integer. 
            // i want 2.00 detected as float
        } else {
            return false;
        }
    } else {
        return false;
    }
}

然后我想我将字符串化2.00然后用split('。')拆分它。但toString没有这样做

var i = 2.00;
alert(i.toString()); 
// Why this always result 2 . i want the character behind point

那么,该怎么做?我想要2.00结果“2.00”,而不仅仅是“2”

感谢您的回答

5 个答案:

答案 0 :(得分:7)

您可以使用Number.toFixed(n);

var i = 2;

alert( i.toFixed(2) ); // "2.00"

var i = 1.2345;

alert( i.toFixed(2) ); // "1.23"

另请注意2 === 2.002 !== "2.00"

答案 1 :(得分:1)

答复修订:

在javascript中,绝对没有办法区分2 2.02.000。因此,如果没有提供额外的小数位,您将从不,能够从var a = 2.00检测到除了integer之外的其他任何内容(根据您的方法)分配

尽管存在[误导]内置方法,但并非如此:

typeof parseInt('2.00', 10) == typeof parseFloat('2.00')
                   'number' == 'number'
                        /* true */

原始答案:

JavaScript没有基于硬件的标量类型,只是Number。出于这个原因,并且因为你真的只有一个有意义的数字,JavaScript正在使用你的2.00并使它成为一个“整数”[松散地使用](因此不存在小数位)。致JavaScript:2 = 2.0 = 2.00 = 2.00000)。

一个很好的例子,如果我给你一个号码12.000000000000并要求你记住它并在一周后将它交给某人,你会花时间记住那里有多少个零,或者专注于事实上,我把号码12递给你了? (twelvetwelve with as many decimal places

需要更少的努力记住

intfloat / double / real而言,您实际上只是从您的角度描述数字类型,而不是JavaScript。考虑将JavaScript中的数字称为int,为其提供标签而不是定义。概述:

Value:     To JavaScript:    To Us:
------     --------------    ------
1          Number            integer
1.00       Number            decimal
1.23       Number            decimal

无论我们将其归类为什么,JavaScript仍然只将其视为Number

如果您需要保留小数位,Number.toFixed(n)将是您最好的选择。

例如:

// only 1 sig-fig
var a = 2.00;
console.log(''+a);             // 2
console.log(a.toFixed(2));     // 2.00

// 3 sig-figs
var b = 2.01
console.log(''+b);            // 2.01
console.log(b.toFixed(2));    // 2.01

顺便说一句,在变量''+前面添加前缀与调用.toString()相同,它只是简写。如果我使用a.toString()b.toString()

,会产生相同的结果

答案 2 :(得分:0)

要进行字符串化(Chrome至少这样做)请使用:

i.toPrecision(3)

这将显示2位小数。

同样,NULL的解决方案非常好,无需计算精确的精度。即.toFixed(decimals)是你最好的朋友

答案 3 :(得分:0)

你无法做你想做的事。

2.00在JavaScript中转换为数字2,没有小数点。如果你想使用.toFixed(2),你可以重新添加它,如上所示。

答案 4 :(得分:0)

我建议保持" 2.00"作为一个字符串,以及如果需要,将其解析为数字用于算术。这样,您可以区分数字2是否输入为" 2"或" 2.00"或" 2.000000"。如果要保留原始小数位数,请输出字符串,而不是数字。