繁体   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