当前位置: 首页 > 面试题库 >

Java中的乘法运算导致负值

薛浩言
2023-03-14
问题内容

为什么以下计算会产生负值?

long interval = 0;

interval = ((60000 * 60) * 24) * 30;

问题答案:

正在评估其中的每个表达式(当然是在编译时;它是一个常量),int * int而不是long * long。结果在某个时候溢出。因此,只需L使所有操作数文字变长即可:

interval = ((60000L * 60L) * 24L) * 30L;

当然,仅使 一些 操作数变长就可以逃脱,但是我倾向于发现仅更改所有内容会更容易。

综上所述,如果您要查找“ 30天的毫秒数”,最好使用:

long interval = TimeUnit.DAYS.toMillis(30);


 类似资料:
  • 关于尾数(关于浮点运算的指南),实际上如何将两个尾数相乘? 假设IEEE 754单精度浮点表示。 假设一个数字的尾数为,将被编码为(十进制为)。第二个数字的尾数为,将被编码为(十进制为)。 <代码>1.5 x 1.125=1.6875。 编码为(十进制为)。但是不等于... 尾数乘法是如何工作的,以至于将4194304(1.5)乘以1048576(1.125),得到5767168(1.6875)?

  • 问题内容: 我有两张桌子 WAC表 基准表 预期结果 要找到的公式是 基准*(1 +(wac_inc / 100)) SQLFIDDLE 在这里,对于每一行,上一行的值是,对于第一行,其值将来自。 希望我说清楚。我们可以使用AFAIK来做到这一点,但我想尽可能 避免 。谁能建议我这样做的更好方法。 问题答案: 尝试: 输出: 编辑1 我试图实现LOG EXP技巧,但除非@usr将我引向解决方案,否

  •   spark中的非负正则化最小二乘法并不是wiki中介绍的NNLS的实现,而是做了相应的优化。它使用改进投影梯度法结合共轭梯度法来求解非负最小二乘。 在介绍spark的源码之前,我们要先了解什么是最小二乘法以及共轭梯度法。 1 最小二乘法 1.1 最小二乘问题   在某些最优化问题中,目标函数由若干个函数的平方和构成,它的一般形式如下所示:   其中x=(x1,x2,…,xn),一般假设m>=n

  • 本文向大家介绍Java算法之递归算法计算阶乘,包括了Java算法之递归算法计算阶乘的使用技巧和注意事项,需要的朋友参考一下 本文为大家分享的java算法计算阶乘,在学习Java课程时经常会遇到求阶乘问题,今天接跟大家一起探讨一下 代码如下: 运行结果:

  • 问题内容: 我只是在玩Java。编写了这个小程序: 输出如下: 2147483647 -2 2147483645 -4 2147483643 -6 2147483641 -8 2147483639 -10 现在我很惊讶。我不知道如何解释这个输出。我知道我可以使用long代替大于整数的最大限制来处理值。但是我只想知道java如何计算这个? 问题答案: 我们需要分析结果的二进制内容: Integer.

  • 问题内容: public class Test { 在第二个输出中,我认为整数范围已过,但是为什么要给出数字,它需要给我一个错误,这种行为的原因是什么? 提前致谢… 问题答案: 您溢出了32位整数的大小。 考虑当我等于10时会发生什么: 但是可以存储在32位整数中的最大正数仅为20亿左右(2个带有9个零)。 实际上,情况变得更糟!中间计算将以有限的精度执行,并且一旦10 * 10 * 10 * 1