簡體   English   中英

Java 中是否存在包含所有其他數字類型的數字類型(原始類型或類)?

[英]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
  • shortchar不包含所有int值。
  • int不包含所有long值。
  • long不包含所有float值。
  • float不包含所有double精度值。

從各類型的范圍可以看出上述情況。

  • double不包含所有long值。

這不是很明顯。 double的范圍大於long的范圍,但double的精度只有 53 位。 如果您進行數學計算,這意味着long范圍內的數字(整數值)不能精確表示為double值。 Long.MAX_VALUE一個例子。

BigIntegerBigDecimal怎么樣。

  • BigInteger不包括非整數的double精度值。

  • BigDecimal不包括對應於double精度的 ±INF 或 ±NaN 值的值


Java中的任何數字都可以轉換成Double嗎?

不,如上所述。 一些long值沒有對應的double值。 BigIntegerBigDecimal值。

如果沒有,是否有一個數字 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);

禮貌 Joakim https://stackoverflow.com/a/33018384/12011019

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM