跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 如何优雅地存储像 BTC 数量这样的高精度浮点数?
未分類
18 4 月 2021

如何优雅地存储像 BTC 数量这样的高精度浮点数?

如何优雅地存储像 BTC 数量这样的高精度浮点数?

資深大佬 : theklf4 11

讲个我同事说的笑话:把 BTC 这种长小数,全部乘以 10 的 n 次方当整数保存,显示时,再除回去……dog
大佬有話說 (21)

  • 資深大佬 : syuraking

    decimal(65,30)

  • 資深大佬 : redtea

    字符串(逃

  • 資深大佬 : DTCPSS

    以聪为单位就可以了,就是个大整数

  • 資深大佬 : lly0514

    歪个。之前存 IP 地址,带着.不好转换,就把 ip 转成十进制,你用电脑执行

    ping 2130706433

    看看效果。

    相邻 IP 地址转成的十进制数,也是相邻的

  • 資深大佬 : yanzhiling2001

    它不是浮点数,因为位数有限,最小单位叫 satoshi.

    > A satoshi is the smallest unit of a bitcoin, equivalent to 100 millionth of a bitcoin.

    1 BTC = 100000000 satoshi

  • 資深大佬 : mckelvin

    定点数啊

  • 資深大佬 : mxT52CRuqR6o5

    写过智能合约都会知道,存的都是个大整数。在 pg 里可以直接用 numeric 存经过位数转换的数值,graph-node 就是这样做的

  • 資深大佬 : moen

    比特币有最小单位啊。有最小单位的数据直接用大整数就行了。

  • 資深大佬 : nightwitch

    大整数+decimal

  • 資深大佬 : DogeElon

    涉及人民币的货币系统里,都是存的以“分”为单位的整数,目的是为了避免精度问题,BTC 同理

  • 資深大佬 : cucldk

    @yanzhiling2001 因为 IPv4 地址就是个 uint32

  • 資深大佬 : LGA1150

    1. 聪 = 1
    2. 大整数

  • 資深大佬 : namelosw

    bigint

  • 資深大佬 : cherryas

    @syuraking 实质上很多都是这样做的,提升通用性,虽然现在有 decimal 可以来更加方便。

  • 資深大佬 : faqqcn

    想说明一下,小数不完全等于浮点数,浮点数只是存储小数的一种方式。前面提到的“乘以 10 的多少次方用整数存”,其实是“定点数”,因为这种存储方式的小数点是固定的。

  • 資深大佬 : ysc3839

    varchar,当文本存

  • 資深大佬 : lc7029

    @syuraking 貌似没啥大问题?我们之前的系统也是这样处理货币相关数值的。

  • 資深大佬 : Jonz

    @syuraking 这是啥笑话?这本来就是解决方案之一啊

  • 資深大佬 : knightdf

    浮点数本身就不精准,金融业一直是用大整数去存带小数的数值。原生 JS 由于浮点数的精度问题,遇到带小数的数值运算一般也是转成大整数再算的

  • 資深大佬 : Flymachine

    也就是自己写一套高精度运算方法代替原生 JS 的浮点数运算

  • 資深大佬 : Flymachine

    @syuraking 这个有什么好笑的?不懂

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具