我正在使用使用mm和inches繪製縮放圖形的應用程序。我需要從一個轉換到另一個,而不會損失精度。我正在努力爭取準確性,並轉向Apfloat軟件包。有人可以解釋...如果我從100mm開始,將其轉換爲英寸,然後再回到Mm,爲什麼我會失去精度?瞭解Apfloat及其精度
public static void main(String[] args) {
Apint mm = new Apint(100);
System.out.println("mm = " + mm);
// 25.4mm in 1 inch
Apfloat toInches = new Apfloat("25.4");
// 100mm/25.4 = x-Inches
Apfloat inches = mm.divide(toInches);
System.out.println("mm - > Inch = " + inches);
// x-Inches x 25.4 = 100mm
Apfloat backToMm = inches.multiply(toInches);
System.out.println("Inch - > mm = " + backToMm);
}
輸出:
mm = 100
mm - > Inch = 3.93
Inch - > mm = 9.99e1
無論我有多大設置精度財產我仍然得到重現9.999 ...
聽起來像是一個浮點舍入錯誤給我。 – Powerlord
@Powerlord我同意,但我導致相信這個特定的包是準確的,並且比BigDecimal更受歡迎。 – cworner1