2 回答

TA貢獻1796條經(jīng)驗 獲得超4個贊
Javascript 數(shù)字都是 IEEE 754 雙精度數(shù),所以看起來這里發(fā)生了一些浮點錯誤。請參閱Javascript 中浮點數(shù)和整數(shù)之間的區(qū)別?了解更多詳情

TA貢獻1834條經(jīng)驗 獲得超8個贊
前言
正如 @Charlie Wallace所說
582344008 * 719476260 大于 Number.MAX_SAFE_INTEGER
JavaScript 的最大整數(shù)值是多少,一個數(shù)字在不損失精度的情況下可以達到多少?
正如 **@baseballllover723和@RealSkeptic所說,這是精度/不同存儲類型大小舍入誤差中的浮點錯誤。
請參閱javascript 類型:
JavaScript 中的 7 種原始數(shù)據(jù)類型是什么
JavaScript中有7種基本類型。
number
對于任何類型的數(shù)字:整數(shù)或浮點數(shù)。整數(shù)/十進制值,精度高達 16 位。JavaScript 數(shù)字都是浮點數(shù),按照 IEEE 754 標準存儲。該標準有幾種格式。JavaScript 使用 binary64 或雙精度。正如以前的名稱所示,數(shù)字以 64 位的二進制格式存儲。string
對于字符串。一個字符串可能有一個或多個字符,沒有單獨的單字符類型。boolean
對于true
/false
。null
對于未知值——具有單個值的獨立類型null
。undefined
對于未分配的值——具有單個值的獨立類型undefined
。object
對于更復雜的數(shù)據(jù)結構。symbol
用于唯一標識符。
typeof
運算符允許我們查看變量中存儲的類型。
兩種形式:
typeof x
或typeof(x)
。返回具有類型名稱的字符串,例如
"string"
.對于
null
返回"object"
- 這是語言中的錯誤,它實際上不是一個對象。
Java中的8種原始數(shù)據(jù)類型是什么?
byte for 8-bit signed integer
short for 16-bit signed integer
int for 32-bit signed integer
long for 64-bit signed integer
char for two bytes in Unicode
float for *decimal* values up to 7 digits of precision
double for *decimal* values up to 16 digits of precision (64 bits)
boolean for true/false
帶有小數(shù)部分的十進制值稱為浮點數(shù)。它們可以用標準或科學計數(shù)法表示。
測試
一種快速的測試方法是使用在線 java 編譯器(Compile and Execute Java Online (JDK 1.8.0))
public class HelloWorld{
public static void main(String []args){
System.out.println("Long Output: "+582344008L * 719476260L);
System.out.println("Float Output: "+582344008.0 * 719476260.0);
}
}
命令:
$javac HelloWorld.java
$java -Xmx128M -Xms16M HelloWorld
輸出:
Long Output: 418982688909250080
Float Output: 4.1898268890925005E17
我的桌面計算器是這樣的:
4.189826889E17
對于JavaScript 在線編譯器:
//JavaScript-C24.2.0 (SpiderMonkey)
print("Output: "+582344008 * 719476260)
輸出:
Output: 418982688909250050
添加回答
舉報