Java中关于除号(/)和模(%)你可能不知道的细节

这篇博客探讨了Java中整型除法与浮点型除法的区别,以及模运算的正负号规则。通过实例代码展示了整型除以整型结果向下取整,而浮点型参与的除法则保留小数。此外,文章还解释了模运算的结果仅与被除数的正负有关,并提供了一个公式帮助理解模运算。最后,应用这些知识解决将华氏温度转换为摄氏温度的问题。

一.除号问题

//我们先来看看整型除整型
System.out.println(10/4);
//你觉得它会等于多少? 2.5?
//我们可以尝试运行一下,你会发现结果是 2,是不是很震惊?

//我们再来看看浮点型除整型
System.out.println(10.0/4);
//你觉得这个结果又会是啥? 2?
//我们再次尝试一下可以发现,结果为 2.5,就是正常的运算结果

为什么会这样子呢?

因为在Java中,运算的结果是由运算数中范围最大的类型来决定的
那么int类型之间的相互运算只有int类型,double和int类型进行运算的话,输出就是double了

二.模/取余(%)

我们经常在进行模运算的时候分不清结果正负号的问题,我们接下来来探讨一下:

我们分别用正负号相互运算

System.out.println(10 % 3); //结果1
System.out.println(-10 % 3); //结果-1
System.out.println(10 % -3); //结果1
System.out.println(-10 % -3); //结果-1

我们可以从这些结果得出,貌似结果的正负值只与第一位数有关
事实也正是如此,结果的正负值与后面值的正负没有关系,实在分不清我们可以套用一下公式:

//公式 a % b = a - a/b * b
int i = -10 - (-10)/(-3)*-3; 
//可以多操作一下看看是不是这个结果
System.out.println("i=" + i); //结果为-1
System.out.println(-10.5 % 3); //结果-1.5

三.对于除和模的应用

1.定义一个变量保存华氏度,请求出华氏温度对应的摄氏温度

华氏度与摄氏度转换公式: 5/9*(华氏度-100)

Scanner scanner = new Scanner(System.in);

System.out.print("请输入华氏温度:");
double hua = scanner.nextDouble();

she = 5.0/9.0*(hua -100.0);
System.out.println(she);

大家可以试一试,我觉得还是挺有意思的

Java 里,除号(/)是一个算术运算符,用于执行法运算。 ### 基本使用 除号Java 中最基础的用途是对两个数值进行法计算。示例代码如下: ```java public class DivisionExample { public static void main(String[] args) { int a = 10; int b = 2; int result = a / b; System.out.println("整数法结果: " + result); double c = 10.0; double d = 3.0; double resultDouble = c / d; System.out.println("浮点数法结果: " + resultDouble); } } ``` 在这个例子中,对于整数相(`a / b`),结果会是整数,小数部分会被直接舍弃;而浮点数相(`c / d`),结果则是浮点数。 ### 特殊情况 - **数为零**:当数为零的时候,会产生同的结果。如果是整数法,会抛出 `ArithmeticException` 异常;要是浮点数法,结果会是 `Infinity`(正无穷)或者 `-Infinity`(负无穷),或者 `NaN`(非数字)。示例代码如下: ```java public class DivisionByZeroExample { public static void main(String[] args) { try { int e = 10; int f = 0; int resultInt = e / f; // 这里会抛出 ArithmeticException } catch (ArithmeticException ex) { System.out.println("整数能为零: " + ex.getMessage()); } double g = 10.0; double h = 0.0; double resultDoublePositive = g / h; // 结果为 Infinity double resultDoubleNegative = -g / h; // 结果为 -Infinity double resultDoubleNaN = 0.0 / 0.0; // 结果为 NaN System.out.println("正浮点数以零: " + resultDoublePositive); System.out.println("负浮点数以零: " + resultDoubleNegative); System.out.println("零以零: " + resultDoubleNaN); } } ``` - **替代方案**:当禁止使用除号时,可以用减法来替代法操作。在计算机内部,所有乘法法操作最终都会转换为加减法进行。例如在使用除号实现法运算的题目中,就可以用减法来完成法操作[^2]。 ### 与标识符关键字的关系 在 Java 里,除号本身并非标识符,也是关键字。标识符能以数字开头,也能是 Java 中的关键字,true、false null 虽是关键字,但具有特殊意义,也可作为标识符使用。常见的 Java 关键字有 `int`、`this`、`abstract` 等 [^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zou-jvm

码字不易,可怜可怜作者吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值