如何将数字2.00作为一个完整的字符串输出

How to output the number 2.00 as a complete string?

本文关键字:一个 输出 字符串 数字      更新时间:2023-09-26

在此之前,我想说声抱歉。但这不是重复的。其他帖子上的任何答案都有同样的问题。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"

感谢您回答

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

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

var i = 1.2345;
alert( i.toFixed(2) ); // "1.23"

还要注意的是,2 === 2.00但是2 !== "2.00"

修订答案:

在javascript中,绝对无法区分22.02.000。因此,如果不提供一些额外的小数点,您将永远不会,能够从var a = 2.00中检测到2在分配后是integer以外的任何东西(根据您的方法)。

一个很好的例子,尽管有[误导性的]内置方法:

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

原始答案:

JavaScript没有基于硬的标量类型,只是一个简单的Number。出于这个原因,并且因为您实际上只有1个有效数字,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

顺便说一句,在var前面加上''+和调用.toString()是一样的,只是简写而已。如果我使用a.toString()b.toString() ,也会得到相同的结果

要字符串化(Chrome至少可以这样做),请使用以下方法:

i.toPrecision(3)

这将显示2位小数。

此外,NULL的解决方案在不需要计算精确精度的情况下也做得很好。即.toFixed(decimals)是您最好的朋友

你不能完全做你想做的事。

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

我建议将"2.00"保留为字符串,并在必要时将其解析为数字以进行算术运算。这样,您就可以区分数字2是输入为"2"、"2.00"还是"2.000000"。如果您想保留原始小数位数,请输出字符串,而不是数字。