java - java算术运算结果的数据类型

标签 java math type-conversion

在java中,我知道算术运算结果的数据类型取决于参与计算的数字的数据类型。 例如,

  1. int + int = int

  2. 长/双=双

一个。但是我找不到任何可以给我所有这些规则的引用资料。有人可以帮助我吗?

算术运算如何避免溢出?例如,2 long 的结果可能不再适合 long ...

非常感谢。

最佳答案

一个。这些规则称为数字提升规则,在 Java Language Specification, §5.6.2 (currently) 中指定。 .

有两种普遍接受的处理溢出的方法。

第一种方法是后检查,您在其中进行运算,比如加法,然后检查结果是否大于任一操作数。例如:

int c = a + b;

if( c<a) {  // assuming a>=0 and b>=0
   // overflow happened
}

第二种方法是预检查,您基本上首先尝试避免溢出的发生。示例:

if( a > Integer.MAX_INTERGER - b ) {
   // overflow happened
}

关于java - java算术运算结果的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9981950/

相关文章:

java - 您是否已经尝试过 Spring Workflow?

java - 计算 future 头寸

c - 如何用C编写函数 'extensible'?

math - 如何检测所有被n条线段包围的区域?

python - 转换 numpy 数组中特定列的数据类型

c - 整数向下转换

java - 创建一个 List<A> 作为 GraphQLObjectType

java - RestTemplate 套接字异常 : Connection Reset using Java 7 but not Java 8

java - Java GUI 开发的 future ?

c++ - 为什么此代码中存在转换错误?