**结案。**此问题不可复制或由打字错误引起。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。
4个月前关门了。
改进这个问题
我想解决一个涉及基础数学的特殊问题。我的算法适用于所有其他测试用例,因此我知道它是正确的。但是对于其中一个测试用例中的一个特定输入,结果是错误的。我通过打印来检查值,值是:
a = 1000000000 and b = 999999999
当我这么做的时候
System.out.print(a*b);
它返回1808348672。
我试过这样做:
long ans = (long)a*b;
System.out.print(ans);
它仍然返回1808348672
2条答案
按热度按时间hfyxw5xn1#
a
以及b
是int
s、 所以它们的乘法也将是一个int
,在升级为long
由显式演员。你可以把它们定义为
long
或者把它们单独投给long
在执行乘法之前。j9per5c42#
我试过这样做:
它仍然返回1808348672
不,它没有:
你可能试过的是
这将首先执行整数乘法,然后将结果转换为
long
. 这不起作用,因为整数乘法在您的强制转换发生之前溢出。