持有价格的Java最佳类型
可能的重复:
在Java中表示货币值
哪种java类型适合处理价格价值?请告诉我为什么?
我不知道这只是一个问题:)
我只知道这种类型必须是“安全的”。因为如果我们创建商店应用或类似的想法。
ps. 我需要最佳实践
以及它如何在数据库中呈现?
可能的重复:
在Java中表示货币值
哪种java类型适合处理价格价值?请告诉我为什么?
我不知道这只是一个问题:)
我只知道这种类型必须是“安全的”。因为如果我们创建商店应用或类似的想法。
ps. 我需要最佳实践
以及它如何在数据库中呈现?
在处理货币时,您应该使用BigDecimal。Java的本机浮点类型存在与其他语言相同的精度问题,因为某些小数不能准确地表示为浮点数。即使认为它不是特定于java的,这也是一篇优秀的文章,它描述了将十进制值表示为浮点数的复杂性。
通常,应用程序中的瞬态值应始终使用 BigDecimal,仅在必要时才转换为浮点数(用于持久性或向用户显示数据等)。
您关心的最小分母的整数(或长整)(美元和欧元的美分)
这是因为计算机上的浮点对于十进制值(0.1 + 0.2 != 0.3)本质上是不准确的
您只需要在UI中在美分和主要美元之间进行转换,而域则以美分计算所有内容