gpt4 book ai didi

java - 为什么 Long 无法接受 12 位数的值,即使我明确声明了它?

转载 作者:搜寻专家 更新时间:2023-11-01 01:16:40 26 4
gpt4 key购买 nike

import java.io.*;
import java.util.*;
public class Solution
{
public static void main(String args[])
{
Scanner s=new Scanner(System.in);

int k=s.nextInt();
long value=0L;

value=(k-(k/2)) * (k/2);

System.out.println(value);

}
}

现在,我将 1856378 作为 k 的输入,
预期输出为 861534819721
但我得到了-1753606775

尽管 valuelong 为什么给出错误答案

最佳答案

在表达式中

(k-(k/2)) * (k/2)

不涉及long 值,只有int 值。因此,没有值被提升为 int。我们只有 int 算法。您受限于 int 的范围。

如果 k 被声明为 long,事情就会不同

long k = s.nextInt();

同样,您可以将表达式的值之一转换或声明为 long

value = (k - (k / 2L)) * (k / 2);

但这可能取决于关联性和执行顺序。它会在这里工作,但不一定在其他表达式中。

关于java - 为什么 Long 无法接受 12 位数的值,即使我明确声明了它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27625069/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com