javascript何时将数字转换为指数表示法?断点是什么?

javascript何时将数字转换为指数表示法?断点是什么?,javascript,algorithm,numbers,dynamic-programming,palindrome,Javascript,Algorithm,Numbers,Dynamic Programming,Palindrome,Javascript何时自动转换大量的e符号?对于修改后的斐波那契序列,如下所示: 函数可以编写如下: function fibonacciModified(t1, t2, n) { const T = Array(n).fill(0); T[0] = t1; T[1] = t2; for(let i=2;i<T.length;i++) { T[i] =

Javascript何时自动转换大量的
e
符号?对于修改后的斐波那契序列,如下所示:

函数可以编写如下:

    function fibonacciModified(t1, t2, n) {
            const T = Array(n).fill(0);
            T[0] = t1;
            T[1] = t2;
            for(let i=2;i<T.length;i++) {
                T[i] = T[i-2] + Math.pow(T[i-1],2);
            }
            
            return T;
    }

    const T = fibonacciModified(0,1,10);
    console.log(T);
函数fibonacciModified(t1,t2,n){
常数T=数组(n)。填充(0);
T[0]=t1;
T[1]=t2;

对于(让i=2;i在引擎盖下,所有javascript数字都有效地存储在这样的科学符号中(它们存储为双精度)。这只是当你要求浏览器向你显示数字时,它选择以不同的方式显示数字。你可以了解更多关于javascript数字是如何实现的。我没有找到任何关于浏览器何时开始以科学记数法显示数字的好的权威来源。我不知道它是由标准定义的,还是browser-dependent,但我的浏览器(Chrome)在数字达到22位后就开始这样做了

如果您希望以不同格式显示数字,可以将其转换为字符串。有许多选项可以让您调整数字的显示方式。例如:

> (1e25).toLocaleString('en-us', { useGrouping: false })
"10000000000000000000000000"
我要警告的是,数字的底层实现只能保持这么高的精度。当你开始使用大量数字时,你将失去一些精度

> 12345678901234567890
12345678901234567000
大于Number.MAX_SAFE_INTEGER(9007199254740991)的数字可能会由于其有限的二进制表示形式而开始失去精度。避免这种情况的方法是使用不同的数字类型,.BigInts以不同的格式存储数字,允许其保存任意大的整数。只需输入“n”即可创建BigInt文本在您的数字之后,可以以许多类似于普通数字的方式使用(包括使用.toString()或.toLocalString()的功能)


在引擎盖下,所有javascript数字都有效地存储在这样的科学符号中(它们存储为双精度)。这只是当你要求浏览器向你显示数字时,它选择以不同的方式显示数字。你可以了解更多关于javascript数字是如何实现的。我没有找到任何关于浏览器何时开始以科学记数法显示数字的好的权威来源。我不知道它是由标准定义的,还是browser-dependent,但我的浏览器(Chrome)在数字达到22位后就开始这样做了

如果您希望以不同格式显示数字,可以将其转换为字符串。有许多选项可以让您调整数字的显示方式。例如:

> (1e25).toLocaleString('en-us', { useGrouping: false })
"10000000000000000000000000"
我要警告的是,数字的底层实现只能保持这么高的精度。当你开始使用大量数字时,你将失去一些精度

> 12345678901234567890
12345678901234567000
大于Number.MAX_SAFE_INTEGER(9007199254740991)的数字可能会由于其有限的二进制表示形式而开始失去精度。避免这种情况的方法是使用不同的数字类型,.BigInts以不同的格式存储数字,允许其保存任意大的整数。只需输入“n”即可创建BigInt文本在您的数字之后,可以以许多类似于普通数字的方式使用(包括使用.toString()或.toLocalString()的功能)


当你超过
Number.MAX\u SAFE\u INTEGER
时,这种情况可能会发生。我不认为把它变成“真实”是有用的无论如何,因为它已经不精确了。BigInt@VLAZ我正在一位在线评委身上尝试这一点。我如何补偿结果的大小?有什么想法吗?使用s。基本上,
12
是一个正常数字,
12n
是一个大整数,它将保证更大的值是精确的。要增加到幂
12n**2n===144n
在您实际将值放入数组之前,您可以将其传递给一个函数,该函数将指数形式更改为@GreenWizard 1中提到的正常整数。由于IEE 754数字表示的有限性,数字
8.426661309728124e2
很可能已经不精确了。2.该建议just通过指数修改基数,这将导致进一步的精度损失。显示的数字有14位十进制数字,乘以10^22将导致最后8位为零,而不是原来的数字。当您高于
number.MAX\u SAFE\u INTEGER
时,可能会发生这种情况。我不认为这是错误的It’把它变成“真实的”很有用无论如何,因为它已经不精确了。BigInt@VLAZ我正在一位在线评委身上尝试这一点。我如何补偿结果的大小?有什么想法吗?使用s。基本上,
12
是一个正常数字,
12n
是一个大整数,它将保证更大的值是精确的。要增加到幂
12n**2n===144n
在您实际将值放入数组之前,您可以将其传递给一个函数,该函数将指数形式更改为@GreenWizard 1中提到的正常整数。由于IEE 754数字表示的有限性,数字
8.426661309728124e2
很可能已经不精确了。2.该建议just通过指数修改基数,这将导致进一步的精度损失。该数字显示了14位十进制数字,乘以10^22将导致最后8位为零,而不是原来的数字。