我想將數字1732四捨五入爲最接近的十個,一百個。我嘗試使用數學回合函數,但它只寫入float和double。如何爲Integer做到這一點? java中有沒有函數?如何在java中整數整數
回答
使用Precision(Apache的百科全書數學3.1.1)
Precision.round(double, scale); // return double
Precision.round(float, scale); // return float
使用MathUtils(Apache的百科全書數學) - 舊版本
MathUtils.round(double, scale); // return double
MathUtils.round(float, scale); // return float
規模 - 小數點右側的位數。 (+/-)
丟棄,因爲方法輪(浮動, 規模)使用。
Math.round(MathUtils.round(1732,-1)); //最接近10,1730
Math.round(MathUtils.round(1732,-2)); //數百,1700
Math.round(MathUtils.round(1732,-3)); //千位數2000
更好的解決方案
int i = 1732;
MathUtils.round((double) i, -1); // nearest ten, 1730.0
MathUtils.round((double) i, -2); // nearest hundred, 1700.0
MathUtils.round((double) i, -3); // nearest thousand, 2000.0
我怎麼能做到最接近的12? – 2016-10-04 17:28:16
你想使用什麼舍入機制?這裏有一個原始的方式,爲正數:
int roundedNumber = (number + 500)/1000 * 1000;
這將帶來類似1499年至1000年和1500至2000年
如果你能有負數:
int offset = (number >= 0) ? 500 : -500;
int roundedNumber = (number + offset)/1000 * 1000;
爲什麼不檢查單位數字... 1.如果小於或等於5,則在單元位置加0,並保持原來的數字。 2.如果大於5,則增加十位數,在單元位置加0。
例如:1736(自6> = 5)的倒圓的數目將現在1740 爲1432(因爲2 < 5)的圓形數目將是1430 ....
希望這將工作......如果不是讓我知道的情況下...
快樂編程,
(int)(Math.round(1732/10.0) * 10)
Math.round(double)
採取double
,然後爲最接近的整數四捨五入。因此,1732
將變爲173.2
(輸入參數)處理Math.round(1732/10.0)
。所以方法就像173.0
一樣。然後將它乘以 (Math.round(1732/10.0) * 10)
給出了舍入的答案,即173.0
將被輸出到int
。
我認爲10D是你的意思,而不是10L。不是嗎? +1 – 2011-04-25 06:43:52
好吧,它的工作原理,但你最好解釋你的答案是如何工作的 – 2015-05-26 11:52:51
@MuhammedRefaat,'Math.round(double)'取得double,然後以整數向上舍入。因此,'Math.round()'處理時'1732'將變爲'173.2'。所以這個方法就像'173.0'一樣。然後乘以10得出舍入答案。 – Sibidharan 2016-01-20 21:10:30
很簡單。試試這個
int y = 173256457;int x = (y/10)*10;
在現在這個可以通過100,1000代替10等等....
正如其他答案所述,這將帶來1739年至1730年,而不是1740年。 – EboMike 2011-04-25 07:21:32
它很容易..
INT X = 1234; int y = x - x%10; //它會給出1230
int y = x - x%100; //它將給出1200
int y = x - x%1000; //它會給出1000
上面的邏輯只會將最後的數字轉換爲0.如果您想實際一輪// 例如。1278這應該四捨五入到1280,因爲最後一位數字8> 5爲此我寫了一個函數檢查出來。
private double returnAfterRoundDigitNum(double paramNumber, int noOfDigit)
{
double tempSubtractNum = paramNumber%(10*noOfDigit);
double tempResultNum = (paramNumber - tempSubtractNum);
if(tempSubtractNum >= (5*noOfDigit))
{
tempResultNum = tempResultNum + (10*noOfDigit);
}
return tempResultNum;
}
這裏傳遞2個參數一個是數量,另一個是直到你必須四捨五入位置。
問候, 阿比納夫
在最近十:
int i = 1986;
int result;
result = i%10 > 5 ? ((i/10)*10)+10 : (i/10)*10;
(隨意添加零對一百萬元)。
這會舍入下面的數字(四捨五入到最接近的100),應該向下舍入:170718被舍入到170800.當然,這應該舍入到170700? – Adam893 2015-07-06 08:51:37
你看過Mathutils.round()的實現嗎?它都基於BigDecimal和字符串轉換。很難想象很多效率較低的方法。
不使用任何數學utils的,四捨五入可以實現到如下任何單位:
double roundValue (double input, double toNearest){
//toNearest is any rounding base like 10, 100 or 1000.
double modValue = input % toNearest;
System.out.println(modValue);
if(modValue == 0d){
roundedValue = input;
}
else
{
roundedValue = ((input - modValue) + toNearest);
}
System.out.println(roundedValue);
return roundedValue;
}
我做這個簡單的方法,它爲我工作得很好。它四捨五入到最接近的十位,但很少大慶石油管理局可以圓100,1000等
public int round10(int num){
if (num%10 < 5){
while (num%10!=0){
num--;
}
}
else {
while (num%10!=0){
num++;
}
}
return num;
}
我通常做這種方式:
int num = 1732;
int roundedNum = Math.round((num + 9)/10 * 10);
這會給你1740作爲結果。
希望這會有所幫助。
- 1. 如何在Java中將*整數*整數?
- 2. 如何在Java中整數浮點數如果它的整體?
- 3. 整數+整數在Java 1.4中
- 4. 如何在Java中讀取一個整數的整數?
- 5. 如何在java中傳遞整數值
- 6. 如何在java中分隔整數?
- 7. 如何在Java中整合一個整數數組,如斐波那契數列
- 8. 整數壓縮在java中
- 9. 如何在整數
- 10. 如何創建整數UUID在Java
- 11. Java的==整數
- 12. 用Java遞歸整數整數
- 13. 如何在MySQL數據類型如整數(整數與整數)&varchar(varchar與varchar)?
- 14. 整數數組工作在java中
- 15. 如何在GUI中將整數添加到整數ArrayList中?
- 16. 整數整數與整數的整數
- 17. 如何在Java中初始化數組中的所有整數?
- 18. 用char和整數字面值在Java中的整數算術
- 19. Java - 在一行中輸出用戶輸入整數的整數
- 20. 在java中爲整數賦一個整數
- 21. 如何調整整數數組?
- 22. 在Java中找到整數只出現在未排序整數數組中
- 23. 如何在PHP中以整數形式傳遞js整數值?
- 24. 如何在c中添加另一個整數前的整數
- 25. 如何轉換整數?在VB.NET中的整數?
- 26. 如何在C++中追加整數(使用整數)
- 27. 如何在CakePHP中檢索整數列的整數值?
- 28. 如何多重整數數組在Java中
- 29. 如何遍歷整數數組列表的元素在Java中
- 30. 如何在2個數組列表中添加整數? JAVA
您選擇的答案被編輯。 – lschin 2011-04-26 03:27:12