17370845950

在Java中如何进行简单的数学计算_Java基础运算说明
Java基本算术运算符为+、-、*、/、%,整数除法截断小数,浮点运算需至少一操作数为浮点型;%支持浮点但有精度误差;优先级同数学,括号可改变顺序;int与double混合时自动提升为

double,强转需显式且向零截断;Math类提供abs等安全函数。

Java中基本算术运算符怎么用

Java的加减乘除取余直接用 +-*/%,但要注意整数除法会截断小数部分,比如 7 / 2 结果是 3,不是 3.5

  • 想得到小数结果,至少一个操作数得是浮点类型:写成 7.0 / 27 / 2.0
  • % 只支持整数和浮点数,但浮点取余可能有精度误差,比如 5.5 % 2.1 结果不一定是精确的 1.3
  • 运算符优先级和数学一致:先乘除取余,后加减;括号可强制改变顺序

int 和 double 混合计算时类型怎么变

Java会自动做「数值提升」:当 intdouble 一起参与运算,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.93(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的问题,而是二进制浮点数表示限制导致的精度丢失。doublefloat 都无法精确表示大多数十进制小数。

立即学习“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 的字符串构造方式——这两个点一旦出错,问题往往延迟暴露,且难以复现。