[英]Designing databases: storing user stats in games(i.e. owned money) and 32bit integer overflow
我正在創建一個小型的,基於數據庫的基於瀏覽器的游戲,但我偶然發現了這個問題:我將用戶擁有的錢存儲為32位整數字段(准確地說是兩個字段。一個存儲在玩家手中,另一個存儲在玩家手中)銀行)。 眾所周知,可以存儲在32位中的最大值是2 ^ 32-1。
我絕對確定,95%的玩家將無法達到上限-但另一方面(在今天進行了一些計算之后),好的玩家將能夠積聚這么多。
考慮到這一點,我提出了以下想法:
我知道可以達到的上限對於某些玩家而言是相當有限的,因此對我來說,第三個選擇比擬議中的選擇更糟。
還有其他方法可以解決此類問題嗎? 你會去哪一個?
以現實世界為例,為什么不使用不同類型的硬幣,例如一百萬單位貨幣的列。
更改為較大的數據類型可能是最簡單的解決方案,除非您的游戲規模很大,否則磁盤空間/內存的考慮並不重要。 有5,000個用戶在玩您的游戲嗎? 從32位更改為64位將額外消耗大約20k。 這還不足以使您失去睡眠。
最好的答案可能來自熟悉銀行如何處理此類情況的人,盡管他們的要求可能比您需要的要復雜得多。
取決於您同時擁有的播放器數量,內存空間應該不是問題,但是以字符串形式存儲肯定會占用更多磁盤空間。
但是認真的說是4,294,967,296盧比/西蒙/弗隆嗎? 他們是誰? 辛·蓋茨?
為什么不以Money數據類型的方式存儲貨幣呢? 當然,這是假定您正在使用SQL Server。 money數據類型將沒有此限制,並且不會受到四舍五入問題的影響。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.