[英]How to persist PRICE information using Hibernate
在SQL中,通常將金額存儲在DECIMAL(10,2)
類型的列中。 但是,當涉及到Hibernate映射時,我希望避免將值映射到浮點數。 有沒有一種方法可以將列映射到包含美分的整數?
使用十進制(10,2)賺錢的做法很糟糕。 同樣,使用浮點數作為貨幣的做法是一種猴子技術(例如,只有猴子會認為用不精確的浮點數存儲定點值是有意義的)。
相反,請確定您需要存儲的最小貨幣值,例如1/1000歐元,然后將貨幣存儲為該值的整數倍。 繼續該示例,值2.57歐元將在money欄中由2570表示。
金錢數學應始終以整數值執行。
邊注:
猴子證明:
float value1 = .1;
float value2 = .2;
float value3 = value1 + value2;
if (value3 == .3)
printf ("m1. you are not a monkey");
else
printf ("m2. you are a monkey. learn something about floating point representation");
消息m1將永遠不會顯示
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.