我想从另一个中减去一个整数,结果应该在0处.所以2减4应该等于0.我可以这样做
int result = x - y;
if (result < 0) result = 0;
Run Code Online (Sandbox Code Playgroud)
但是有更优雅的方式吗?
Tho*_*ing 21
int result = Math.max(0, x - y);
Run Code Online (Sandbox Code Playgroud)
虽然很多人都在Math.max(...)
寻求解决方案,但我想提供一个简单的if语句.
if (y > x) {
result = 0;
} else {
result = x - y;
}
Run Code Online (Sandbox Code Playgroud)
保证始终将结果提升为0,它不需要调用额外的堆栈帧(输入Math静态函数),并且它可以防止下溢.
在罕见的情况下,X接近最小int,并且y足够大,评估(xy)将导致下溢.结果将是"太大"的负数以适应int的空间,因此会卷入一个无意义的(可能是正面的)答案.
通过强制if语句来保证不存在下溢,此解决方案也比Math.max(...)
解决方案更正确.但是,大多数人并不关心,因为他们很少处理接近造成溢出和下溢的数字.
归档时间: |
|
查看次数: |
16773 次 |
最近记录: |