想象我有一個長時間,是一個表示價格:Java,如何以一種模仿四捨五入的方式截斷長數字?
548880
也許這就像指定一個54.8880價格。長表格用於通過電線傳輸數據。
我想簡單地將價格調整到給定的精度。
例如,54.8880 --> 54.89
,因此我最終成爲長548900.
是否有可能直接長在這種方式圓了,否則我就早已把重鑄BigDecimal
,圓形,然後回長?
想象我有一個長時間,是一個表示價格:Java,如何以一種模仿四捨五入的方式截斷長數字?
548880
也許這就像指定一個54.8880價格。長表格用於通過電線傳輸數據。
我想簡單地將價格調整到給定的精度。
例如,54.8880 --> 54.89
,因此我最終成爲長548900.
是否有可能直接長在這種方式圓了,否則我就早已把重鑄BigDecimal
,圓形,然後回長?
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以匹配您的精度。
謝謝,這更符合我的想法。讓我測試它真的很快 –
這是沿着我想要的線,但如果我改變我的精度從10到100,它不返回33400,它返回33310. –
你必須在最後更改10線。由於四捨五入的效果,33333總是會返回33330。 33340只是一個例子。 – Shiro
的有點棘手單行舍入到100的倍數是:
(n + 50)/100 * 100
適應的常數輪其他精度。
我在原來的問題中沒有提到這一點,但我實際上需要總是朝着負無窮的方向發展。這非常聰明,但它是否適合這樣的四捨五入? –
對於正數,這更簡單:n/100 * 100 – Henry
怎麼了領先的0? –
有['NumberFormat'](https://docs.oracle.com/javase/8/docs/api/java/text/NumberFormat.html)和['DecimalFormat'](https://docs.oracle。 com/javase/8/docs/api/java/text/DecimalFormat.html)可以幫助您使用此格式。 –
我們的價格我們的8位數字,所以前導0是佔位符,因爲我們可以發送像0005這樣的數字,意味着5,005到平均值50,05到平均值500和5到平均值5000 –