国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

redis score 超過16位丟失精度,超過22變科學(xué)計(jì)數(shù)

fantasmic

問題描述

咨詢個(gè)與框架無(wú)關(guān)的問題,做游戲項(xiàng)目時(shí)需要保存用戶的積分值且在每局結(jié)束時(shí)實(shí)時(shí)返回排名和積分值。這塊用的是redis zset,但有個(gè)問題是游戲中關(guān)數(shù)很多,積分值也會(huì)很大(就是超過16位數(shù)),score中保存整數(shù)值超過16位后精度丟失排序也會(huì)不準(zhǔn)。

1369 2 0
2個(gè)回答

darcy

我是把原數(shù)據(jù)處理成json后再入庫(kù)

  • fantasmic 2023-10-16

    不是入庫(kù)問題,是需要排序

軟飯工程師

Redis的ZSET底層使用雙精度浮點(diǎn)數(shù)來存儲(chǔ)分值(score),而雙精度浮點(diǎn)數(shù)的有效精度為15到17位,所以確實(shí)會(huì)產(chǎn)生精度丟失的問題。
可以使用 bccomp 擴(kuò)展來進(jìn)行排序,把他放到靜態(tài)數(shù)組里面,或者單獨(dú)開啟一個(gè)進(jìn)程處理這個(gè)數(shù)據(jù),寫入數(shù)據(jù)的時(shí)候就做排序。
或者,你用c 重構(gòu)一下redis 簡(jiǎn)易版,讓他支持超過16位的大整數(shù)

  • 暫無(wú)評(píng)論
年代過于久遠(yuǎn),無(wú)法發(fā)表回答
??