Tim*_*ter 11
不,这是因为150/336是一个整数除法,它总是截断小数部分,因为结果也是一个int.
所以两者中的一个必须是十进制数:
double d = 150d / 336;
Run Code Online (Sandbox Code Playgroud)
除法将结果舍入为零,结果的绝对值是小于两个操作数的商的绝对值的最大可能整数.当两个操作数具有相同符号时,结果为零或正,当两个操作数具有相反符号时,结果为零或负.
((150 / 336) * 460)
Run Code Online (Sandbox Code Playgroud)
这些数字是整数,它们没有小数位.由于150 / 336求值为0整数数学,因此将其乘以任何东西也会产生0.
您需要明确地将每个数字设为一个双精度数.像这样的东西:
((150d / 336d) * 460d)
Run Code Online (Sandbox Code Playgroud)