使用JPA(EclipseLink)在MySQL中进行精确Java浮点运算

han*_*ans 3 java mysql floating-point jpa

我有一个精度问题,通过jpa(EclipseLink)在mysql中存储一个浮点值.在我的代码中,我用#注释了该字段

@Column(precision=15, scale=7)
private float x;
Run Code Online (Sandbox Code Playgroud)

但是当我存储类似322,249878的值时,数据库返回322.25.什么事情在那里:)?

axt*_*avt 7

precisionscale设置仅适用于精确的数字类型(即BigDecimal在Java和decimalMySQL中).

浮点类型(floatdouble)的性质是近似的,因此这些设置对它们没有意义.

另请注意,如果更改此字段的类型,BigDecimal 则应使用精确值对其进行初始化.