Java基本算术运算符为+、-、*、/、%,整数除法截断小数,浮点运算需至少一操作数为浮点型;%支持浮点但有精度误差;优先级同数学,括号可改变顺序;int与double混合时自动提升为double,强转需显式且向零截断;Math类提供abs等安全函数。

Java中基本算术运算符怎么用
Java的加减乘除取余直接用 +、-、*、/、%,但要注意整数除法会截断小数部分,比如 7 / 2 结果是 3,不是 3.5。
- 想得到小数结果,至少一个操作数得是浮点类型:写成
7.0 / 2或7 / 2.0 -
%只支持整数和浮点数,但浮点取余可能有精度误差,比如5.5 % 2.1结果不一定是精确的1.3 - 运算符优先级和数学一致:先乘除取余,后加减;括号可强制改变顺序
int 和 double 混合计算时类型怎么变
Java会自动做「数值提升」:当 int 和 double 一起参与运算,int 会被转成 double,整个表达式结果是 double。但这个过程不可逆,不会自动缩回 int。
- 例如:
int a = 5; double b = 2.0; var result = a + b;→result类型是double - 如果硬要存回
int,必须显式强转:int c = (int)(a + b);,但会丢掉小数部分 - 强转不等于四舍五入:
(int)3.9是3,(int)-3.9是-3(向零截断)
Math类里常用函数有哪些实用场景
基础四则不够用时,Math 类提供更安全、更通用的数学能力,比如避免除零、处理边界值、跨类型计算。
-
Math.abs(x):比x 更可靠,对Integer.MIN_VALUE也能返回正确绝对值 -
Math.max(a, b)/Math.min(a, b):支持所有数字类型重载,不用自己写比较逻辑 -
Math.pow(2, 10)返回double,注意结果可能有浮点误差;需要整数幂可用循环或BigInteger -
Math.round(3.7)返回long,等价于(long)Math.floor(x + 0.5);想四舍五入到指定位数,得自己处理,比如Math.round(x * 100.0) / 100.0
为什么 0.1 + 0.2 != 0.3
这不是Java的问题,而是二进制浮点数表示限制导致的精度丢失。double 和 float 都无法精确表示大多数十进制小数。
立即学习“Java免费学习笔记(深入)”;
- 运行
System.out.println(0.1 + 0.2 == 0.3);
输出false - 比较浮点数应改用误差范围:
Math.abs(a - b) - 涉及金额或高精度需求,必须用
BigDecimal,但要注意构造函数别用double参数:new BigDecimal(0.1)仍会带入二进制误差;应写成new BigDecimal("0.1")
实际写业务逻辑时,最容易被忽略的是浮点比较和 BigDecimal 的字符串构造方式——这两个点一旦出错,问题往往延迟暴露,且难以复现。









