如何在hibernate中将双精度转换为字符串

如何在hibernate中将双精度转换为字符串,hibernate,orm,Hibernate,Orm,我有如下hql查询: 选择sellingPrice,从库存中转换(sellingPrice作为字符串) 但在施法后,它会产生以下意想不到的结果: 6.31 6.3099999996 6.37 6.3700000000000001 6.38 6.379999999 6.38 6.379999999 为什么此查询将6.31转换为6.3099999996 请告知 如果必须为第二个参数返回一个字符串,则在强制转换之前对该值进行四舍五入,如下所示: select sellingPrice,

我有如下hql查询:

选择sellingPrice,从库存中转换(sellingPrice作为字符串)

但在施法后,它会产生以下意想不到的结果:

6.31 6.3099999996

6.37 6.3700000000000001

6.38 6.379999999

6.38 6.379999999

为什么此查询将
6.31
转换为
6.3099999996


请告知

如果必须为第二个参数返回一个字符串,则在强制转换之前对该值进行四舍五入,如下所示:

select sellingPrice, 
       cast(((abs(sellingPrice) * 100 + 0.5)/100.0 * sign(sellingPrice)) as string) 
from Inventoryfloor

请阅读本文以获得基本解释->

如果必须为第二个参数返回一个字符串,请在强制转换之前对该值进行四舍五入,如下所示:

select sellingPrice, 
       cast(((abs(sellingPrice) * 100 + 0.5)/100.0 * sign(sellingPrice)) as string) 
from Inventoryfloor

阅读此文章了解基本解释->

您可以使用BigDecimal而不是Double您可以使用BigDecimal而不是Double在CAST关键字后添加一个括号后,它对我的CAST有效(((abs(sellingPrice)*100+0.5)/100.0*符号(sellingPrice))作为字符串)在CAST关键字后面添加一个括号后,它对我的CAST有效((abs(sellingPrice)*100+0.5)/100.0*符号(sellingPrice))作为字符串)