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
将常量调整为其他精度。
假设我有一个代表价格的多头:
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
将常量调整为其他精度。