我有一个公式来评估
((x+y-1)*(x+y-2))/2 + x
Run Code Online (Sandbox Code Playgroud)
并获取它的字符串表示形式.所以在Java 1.7中我写了
public static void main(String[] args)
{
int x = 99999;
int y = 99999;
int answer = ((x+y-1)*(x+y-2))/2 + x;
String s = Integer.toString(answer);
System.out.println(s);
}
Run Code Online (Sandbox Code Playgroud)
并在Python 2.7中
def answer(x, y):
z = ((x+y-1)*(x+y-2))/2 + x
return str(z);
print(answer(99999,99999))
Run Code Online (Sandbox Code Playgroud)
Java给了我一些输出,672047173而Python给了我19999400005看似Python的价值是正确的.这种差异背后的原因是什么?
19999400005int变量的值太大,因此Java计算会溢出.
long改为使用变量:
public static void main(String[] args)
{
long x = 99999;
long y = 99999;
long answer = ((x+y-1)*(x+y-2))/2 + x;
String s = Long.toString(answer);
System.out.println(s);
}
Run Code Online (Sandbox Code Playgroud)
输出是:
19999400005
Run Code Online (Sandbox Code Playgroud)
另请注意,您可以answer直接打印,而不必将其String明确转换为:
System.out.println(answer);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
57 次 |
| 最近记录: |