为什么用Java将24 * 60 * 60 * 1000 * 1000除以24 * 60 * 60 * 1000不等于1000?
因为乘法会溢出32位整数。64位还可以:
public class Test
{
public static void main(String[] args)
{
int intProduct = 24 * 60 * 60 * 1000 * 1000;
long longProduct = 24L * 60 * 60 * 1000 * 1000;
System.out.println(intProduct); // Prints 500654080
System.out.println(longProduct); // Prints 86400000000
}
}
显然,在乘法溢出之后,除法不会“撤消”该溢出。
问题内容: 我试图通过乘以毫秒来计算30天,但是结果持续出现,结果是days_30的值是负数,我不确定为什么。 任何建议,不胜感激! 代码片段: days_30值导致:-1702967296 聚苯乙烯 结果较小(但仍为负数)。-1.702967296E9 问题答案: 您正在相乘,并且发生溢出,因为最大整数为。只有在乘法之后,它才会转换为。将第一个数字转换为。 或使用文字: 从一开始,这将迫使数学运
问题内容: 我想生成日期列表,但发现日期从-25 * 24 * 60 * 60 * 1000开始是错误的 我的本地日期是2016-07-17。我有 我不知道从哪里来。我按照下面的(和)将25分解为24和-1 ,然后得到正确的日期。 为什么起作用但不起作用? 这是我的代码:从i = 25起日期是错误的 问题答案: 您超出了的范围。产生一个(其然后从减去从)。 可以是24,因为结果是2,073,600
问题内容: 我正在尝试计算(360/24)/ 60当我应该得到0.25时,我一直得到答案0.0 换句话说:我想将360除以24,然后将结果除以60 打印输出: 这是为什么?我是在做一些真正愚蠢的事情,还是有充分的理由呢? 问题答案: 算术中的所有操作数都不是浮点数-因此所有操作均使用整数算术完成,然后转换为浮点数。如果将适当的操作数的类型更改为浮点数,则可以正常工作: 请注意,如果仅将60更改为浮
资本家总是把未来描述得相当美好。这一次,周总显然也错误地估计了形势。北京啊,毕竟是首都,大城市,他和陈董老想着把公司做大,从这里做到大城市,做到北京上海,再开分公司,再上市,上了市再开分公司…… 他这么想,于是也想当然地认为绝影会很乐意去北京,所以在跟他说这事的时候,他用了一种似乎是施舍的语气。 绝影当然不吃他这一套,过去两年中,他出差也去了不少地方,每次一回家就跟别人感叹:“还是四川好啊……”
问题内容: 今天,我遇到了一个很奇怪的问题。我需要计算数字的字符串长度,所以我想出了这个解决方案 这是基于数学公式 10 n n(在这里解释) 但是我发现在C语言中 是 不是 等于 但应该如此。 我什至用这段代码在Java中尝试了同样的事情 但它的行为方式相同。 故事还在继续。执行此代码后 我懂了 因此,该错误似乎发生在每1000个倍数上。 我向我的C老师展示了这一点,他说这可能是由于日志分割期间
我基本上是在尝试捕捉sql命令及其对CPU的等待时间,我只想运行一个60秒的while循环,并将所有数据插入到一个临时表中。我不是很好当游标,或者如何在SQL中完成这一个。