需要將我的答案舍入到最接近的第10位。小數點後第十位到最近的第10位
double finalPrice = everyMile + 2.8;
DecimalFormat fmt = new DecimalFormat("0.00");
this.answerField.setText("£" + fmt.format(finalPrice) + " Approx");
上述代碼將整數舍入到最接近的10,但不會舍入小數。例如2.44應舍入爲2.40
需要將我的答案舍入到最接近的第10位。小數點後第十位到最近的第10位
double finalPrice = everyMile + 2.8;
DecimalFormat fmt = new DecimalFormat("0.00");
this.answerField.setText("£" + fmt.format(finalPrice) + " Approx");
上述代碼將整數舍入到最接近的10,但不會舍入小數。例如2.44應舍入爲2.40
更改了一下模式進行硬編碼的最終零:
double finalPrice = 2.46;
DecimalFormat fmt = new DecimalFormat("0.0'0'");
System.out.println("£" + fmt.format(finalPrice) + " Approx");
現在,如果你操縱真實世界的錢,你最好不要使用雙擊,但int或BigInteger的。
MAGICAL。 lol 工作。所以說'0'意味着無論如何,物理上都將0作爲最終數字? – 2009-12-11 12:58:29
是的,它的確如此。 – Jerome 2009-12-11 12:59:00
甜蜜,感謝您的幫助。我在一個不同的論壇發佈了相同的東西,4小時後他們諷刺地認爲我得到了谷歌(我之前試過) 你們在哪裏超快速大聲笑 – 2009-12-11 13:02:21
改爲使用BigDecimal
。
你真的,真的不想使用二進制浮點的貨幣值。編輯:round()
不允許你指定小數位,只有有效數字。這裏有一個稍微繁瑣的技術,但它的作品(假設你要截斷,基本):
import java.math.*;
public class Test
{
public static void main(String[] args)
{
BigDecimal bd = new BigDecimal("20.44");
bd = bd.movePointRight(1);
BigInteger floor = bd.toBigInteger();
bd = new BigDecimal(floor).movePointLeft(1);
System.out.println(bd);
}
}
我想希望有這樣的一個簡單的方法...
@彼得的答案給出了更簡單快捷的方法。 – Vadzim 2015-12-11 15:36:25
@Vadzim:這是調用BigDecimal(double)構造函數,這很少是一個好主意IMO。我們仍然不知道OP在舍入和截斷方面想要做什麼。但是,嘿,有多種選擇是很好的... – 2015-12-11 15:45:50
編輯
試試這個:
double d = 25.642;
String s = String.format("£ %.2f", Double.parseDouble(String.format("%.1f", d).replace(',', '.')));
System.out.println(s);
我知道這是一個笨方法,但它的作品。
對不起,沒有工作 – 2009-12-11 13:00:13
此輸出2.40
BigDecimal bd = new BigDecimal(2.44);
System.out.println(bd.setScale(1,RoundingMode.HALF_UP).setScale(2));
嘗試以下操作:
double finalPriceRoundedToNearestTenth = Math.round(10.0 * finalPrice)/10.0;
借調喬恩斯基特的最後一句話,請注意,沒有** **用十進制作爲X.1,X號。 2,x.3,x.4,x.6,x.7,x.8或x.9完全表示爲浮點數。 – 2009-12-11 12:48:57
我不明白你說的是什麼 – 2009-12-11 12:59:21
花時間理解它,因爲它很重要。 – 2009-12-11 13:18:01