oracle數據庫裡面number類型的數據333映射給實體類的String類型屬性時變成了33299999999999997
這是因為在計算機中,浮點數的表示是基於二進制的,而不是十進制。由於二進制無法精確表示某些十進制數字,所以在進行浮點運算時可能會存在一些微小的誤差。
在你的情況下,33.3這個十進制數字在二進制中無法精確表示,因此在將其轉換為二進制進行計算時,可能會產生一些小數位的誤差。這就是為什麼你在將33.3映射到實體類的String屬性時,它變成了33.299999999999997。
如果你需要保持精確度,可以考慮使用BigDecimal類型來表示數字。BigDecimal類型可以精確地表示十進制數字,並且提供了各種數學運算方法。在將數字映射到實體類的屬性時,你可以將其轉換為String類型,以保持精確度。
以下是使用BigDecimal類型的示例代碼:
import java.math.BigDecimal;
public class MyClass {
private BigDecimal number;
public BigDecimal getNumber() {
return number;
}
public void setNumber(BigDecimal number) {
this.number = number;
}
public static void main(String[] args) {
BigDecimal number = new BigDecimal("33.3");
MyClass myClass = new MyClass();
myClass.setNumber(number);
// 將BigDecimal類型的數字轉換為String類型
String numberAsString = myClass.getNumber().toString();
System.out.println(numberAsString); // 輸出: 33.3
}
}
使用BigDecimal類型可以保持數字的精確度,並且在需要時可以進行各種數學運算
原文地址: http://www.cveoy.top/t/topic/iRL7 著作权归作者所有。请勿转载和采集!