【问题标题】:I am having different value from compiler and calculator [duplicate]我与编译器和计算器有不同的价值[重复]
【发布时间】:2018-02-06 04:00:32
【问题描述】:

我正在编写代码(我知道输出,在 Java 中),在编译它并给出输入后,我得到了一个奇怪的值。

代码片段 -

    long a,b,c;
    a=-245436499;
    b=992;
    c=(a+b);
    System.out.print(c%b);

它给我的输出

-819

但是当我用计算器计算时,它是

173 \\why?

证明:
Calculators output
Compiler's output

【问题讨论】:

  • 你在计算器上做错了。
  • 同意@Kon 你认为c%b 做了什么?
  • 请检查图片链接。
  • @JorgeCampos c%b 提醒 c 和 b 之间的划分

标签: java


【解决方案1】:

负数取模有两种方法:

  1. Java(根据 JLS)使用“保留符号”方法;即如果第一个操作数为负,非零结果为负
  2. 通过在方法 1 的结果中添加(如有必要)第二个操作数(使)结果为正

您的计算器显然使用了方法 2 (-819 + 992 = 173)

【讨论】:

  • 你不认为它违反了正常的计算方法吗?
  • @nam 这里的“异常”是什么? √-1i 还是 e^-iπ-1 是“异常”吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-24
  • 2021-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多