Java,如何以模仿四舍五入的方式截断 long 中的数字?

Java, how to truncate digits in a long such in a way that mimics rounding?

假设我有一个代表价格的多头:

548880

也许这指定了 54.8880 这样的价格。长格式用于通过网络传输数据。

我想简单地将价格四舍五入到给定的精度。

例如54.8880 --> 54.89,这样我最后的多头就变成了548900

是否可以通过这种方式直接将 long 舍入,或者我是否必须将 long 重铸为 BigDecimal,舍入,然后再返回 long?

long n = 33333; // your number
int digit = n%10; // will return 3
if(digit < 5) 
    n -= digit; // 33330
else {n-= digit; n += 10;} // 33340

更改 10 以匹配您的精度。

舍入到 100 的倍数有点棘手的一行是:

(n + 50) / 100 * 100

将常量调整为其他精度。