[英]Is there a numerical type (primitive or class) in Java that contains every other numerical type?
Java中的任何數字都可以轉換成Double嗎?
如果沒有,是否有一個數字 class 可以解析任何數字類型並提供基本的數學運算?
我的數字可以是 int、double、float、long、unsigned float 或 unsigned long。 如果我可以稱它們為“數字”,那會更容易,因為我需要的只是像等於、大於、......
Java 中是否存在包含所有其他數字類型的數字類型(原始類型或類)?
不。
從原始類型開始:
byte
不包含所有short
值short
或char
不包含所有int
值。int
不包含所有long
值。long
不包含所有float
值。float
不包含所有double
精度值。從各類型的范圍可以看出上述情況。
double
不包含所有long
值。 這不是很明顯。 double
的范圍大於long
的范圍,但double
的精度只有 53 位。 如果您進行數學計算,這意味着long
范圍內的數字(整數值)不能精確表示為double
值。 Long.MAX_VALUE
一個例子。
BigInteger
和BigDecimal
怎么樣。
BigInteger
不包括非整數的double
精度值。
BigDecimal
不包括對應於double
精度的 ±INF 或 ±NaN 值的值
Java中的任何數字都可以轉換成Double嗎?
不,如上所述。 一些long
值沒有對應的double
值。 有BigInteger
和BigDecimal
值。
如果沒有,是否有一個數字 class 可以解析任何數字類型並提供基本的數學運算?
如果您准備打折 INF 和 NaN 值,並在MathContext
中使用足夠大的precision
,那么BigDecimal
應該足夠好......在機器 memory 和實現的范圍內。
(當前的BigInteger
class 有架構限制;請參閱Is there an upper bound to BigInteger? )
java.lang.Number 是許多不同數字類型的抽象超級 class。 因此,Java 是一種強類型語言,並且始終需要正確的數據類型。 確實,有時需要將其轉換為適當的或不同的數據類型。
魔鬼在細節中。 當然,java.lang.Number 是一個包含所有其他數字類型的 class。
這似乎可以解決問題
Number number = NumberFormat.getInstance().parse(myString);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.