这是我的“ProjectEntity”类中的代码部分(我在其中使用 hibernate 进行 SQL 调用)
@Column(name = "BUDGET")
private float budget;
public float getBudget() {
return budget;
}
public float setBudget(float budget) {
this.budget = budget;
}
在另一个类中,我这样称呼我的 setter:
newProject.setBudget(Float.parseFloat(strTotalAmount.substring(0, strTotalAmount.indexOf(" (hrs)"))) * m);
这里有一个名为 strTotalAmount 的字符串,它看起来像这样:“51.0 (hrs)”。所以它基本上从字符串中获取值 51.0 并乘以等于 47.6 的浮点“m”,到这里一切都很好。它应该将该值设置为 2427.6,但它设置为 2427.5999。可能是什么问题?
注意:最初在 ProjectEntity 中“预算”值是双倍而不是 float 。我已经把它改成 float 了。但一切都没有改变。
最佳答案
如果您需要精确的数字, float 是 Java 中的近似值,尤其是在使用 BigDecimal 处理金钱时。
public class FloatTest {
public static void main(String[] args) {
BigDecimal f1 = new BigDecimal("51.0");
BigDecimal f2 = new BigDecimal("47.6");
System.out.println(f1.multiply(f2));
}
}
关于java - 浮点 setter 设置任意分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20968711/