Java Hibernate将标量添加到Hibernate.FLOAT四舍五入
对于执行查询时的上述代码,数据库中的值66996956返回为6.6996956E7Java Hibernate将标量添加到Hibernate.FLOAT四舍五入,java,mysql,hibernate,floating-point,Java,Mysql,Hibernate,Floating Point,对于执行查询时的上述代码,数据库中的值66996956返回为6.6996956E7 即使是双倍,输出也为6.6996956E7。但当提供math.BIG_DECIMAL时,该值是正确的。为什么double和float中存在问题。在代码中,我可以引入bigdecimal,因为其余数据都是浮点数。66996956和6.6996956E7是相同的值,显示方式不同。请参阅以了解其显示方式的原因: 如果m小于10^3或大于或等于10^7,则为 以所谓的“计算机化科学符号”表示 如果您不介意浮点和doubl
即使是双倍,输出也为6.6996956E7。但当提供math.BIG_DECIMAL时,该值是正确的。为什么double和float中存在问题。在代码中,我可以引入bigdecimal,因为其余数据都是浮点数。66996956和6.6996956E7是相同的值,显示方式不同。请参阅以了解其显示方式的原因: 如果m小于10^3或大于或等于10^7,则为 以所谓的“计算机化科学符号”表示
如果您不介意浮点和double必然具有的精度损失(对于较大的值甚至更高),那么请使用它们。如果你想要一个绝对精确的值,那么就使用bigdecime。可以理解两者都是相同的值,需要知道如何在UI上以正常格式显示
Query qry = session.createSQLQuery(qrystr)
.addScalar("id", Hibernate.INTEGER)
.addScalar("balance",Hibernate.FLOAT);
Object[] headerDetails=(Object[])qry.uniqueResult();
session.close();
System.out.println("balance"+headerDetails[1]);