這是因為在計算機中,浮點數的表示是基於二進制的,而不是十進制。由於二進制無法精確表示某些十進制數字,所以在進行浮點運算時可能會存在一些微小的誤差。

在你的情況下,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類型可以保持數字的精確度,並且在需要時可以進行各種數學運算

oracle數據庫裡面number類型的數據333映射給實體類的String類型屬性時變成了33299999999999997

原文地址: http://www.cveoy.top/t/topic/iRL7 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录