不正确的乘法

-2 java math multiplication

我正在尝试解决这个涉及基本数学的特定问题。我的算法适用于所有其他测试用例,因此我知道它是正确的。但是对于其中一个测试用例中的一个特定输入,结果是错误的。我通过打印它们来检查值,值是:

a = 1000000000 and b = 999999999
Run Code Online (Sandbox Code Playgroud)

当我做

System.out.print(a*b); 
Run Code Online (Sandbox Code Playgroud)

它返回 1808348672。

我试过这样做:

long ans = (long)a*b;
System.out.print(ans);
Run Code Online (Sandbox Code Playgroud)

它仍然返回 1808348672

Kon*_*lph 5

我试过这样做:

long ans = (long)a*b;
System.out.print(ans);
Run Code Online (Sandbox Code Playgroud)

它仍然返回 1808348672

不,它不会:

class Foo {
    public static void main(String[] args) {
        int a = 1000000000;
        int b = 999999999;
        long ans = (long)a*b;
        System.out.print(ans);
    }
}
Run Code Online (Sandbox Code Playgroud)
long ans = (long)a*b;
System.out.print(ans);
Run Code Online (Sandbox Code Playgroud)

你可能尝试过的是

long ans = (long) (a*b);
Run Code Online (Sandbox Code Playgroud)

这将首先执行整数乘法,然后将结果转换long。这不起作用,因为整数乘法在您的转换发生之前溢出。