【问题标题】:Why am I getting wrong result with multiplication (*) in java [duplicate]为什么我在java中使用乘法(*)得到错误的结果[重复]
【发布时间】:2018-03-30 05:37:11
【问题描述】:

我是Java新手,只想计算一年的毫秒数,结果却不如预期

long milisecondsInYear = 1000*60*60*24*365;
System.out.println(milisecondsInYear); // Expect 31536000000 but get 1471228928

请在这方面给我建议。提前谢谢你。

【问题讨论】:

  • 这已经超过了long的范围。
  • 你在 int 算术中做所有的数学运算。
  • 使用1000L*60*60*24*365(注L)

标签: java


【解决方案1】:

每当您进行任何计算时,java 都会假定并将其计算为 int,即使您将结果保存在 long 变量中也是如此。

实际结果不适合int变量,因此你得到了那个值。

要解决这个问题,你需要在最后添加一个L,让java知道这实际上是一个长。

long milisecondsInYear = 1000*60*60*24*365L;
System.out.println(milisecondsInYear); // Expect 31536000000 but get 1471228928

【讨论】:

    猜你喜欢
    • 2020-04-18
    • 2021-12-22
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多