Q
比特幣數字格式化
3
A
回答
2
比特幣量的範圍可以從1聰(0.00000001 BTC)到近 2,100,000,000,000,000(21000000 BTC)。爲避免舍入錯誤,您必須確保您的PHP實現支持全範圍的比特幣值,而不會損失精度。大多數PHP實現使用 IEEE 64位雙精度浮點數與53位精度爲 ,這足以正確表示 比特幣值的全部範圍。
儘管這與PHP有關,但它仍然相關。如所建議的,您應該使用十進制值類型。
最後的塊,將產生硬幣將是塊#6929999這 應在2140年或附近產生,然後流通 硬幣總數將在20,999,999.9769 BTC保持不變。 即使允許的精度從當前的8位小數擴展, 總流通的BTC總是會略低於2100萬 (假設其他條件保持不變)。例如,精度小數爲16, ,最終總數將爲20,999,999.999999999496, BTC。
字符串的一個例子被轉換爲十進制並保持精度:
var maxBtc = "20999999.999999999496";
var maxBtcDecimal = Decimal.Parse(maxBtc, NumberStyles.AllowDecimalPoint);
轉換回:
var maxBtcString = Convert.ToString(maxBtcDecimal);
簡單的數學:
var oneBtc = new decimal(1.000000000000);
var newBtcValue = maxBtcDecimal - oneBtc;
0
相比於浮點類型,小數類型有更高的精度和更小的範圍內,這使得它適合金融和貨幣計算。
如果您正在對比特幣金額進行數學運算,您應該使用十進制。
Decimal.Parse()
應該用來從字符串轉換爲十進制。另見本other Stackoverflow question
1
十進制是最好的可用選項。
看看這方面的工作C#比特幣庫,它使用十進制的比特幣價值:https://github.com/GeorgeKimionis/BitcoinLib
你需要知道,在C#十進制是不固定的,浮動的,所以你需要配置你的O/RM或您的DB精確保留8個小數點。
相關問題
- 1. 以特定格式格式化貨幣
- 2. 數字格式化函數值(貨幣)
- 3. 解析比特幣URL地址格式
- 4. 未格式化貨幣格式貨幣
- 5. 如何使用ZF2 I18n currencyformatter格式化比特幣?
- 6. 格式化貨幣
- 7. 格式化貨幣
- 8. 格式化貨幣
- 9. Rails - 在Getter中格式化爲貨幣格式的數字
- 10. PHP數字格式(貨幣)
- 11. 格式化字符串 - 貨幣值
- 12. 將貨幣格式化爲區域設置特定格式
- 13. StringFormat貨幣特殊格式
- 14. Kendo UI貨幣格式化
- 15. 用C++格式化貨幣
- 16. 格式化AED貨幣
- 17. 格式化貨幣輸出
- 18. SQL貨幣格式化
- 19. C#貨幣格式化(「C2」)
- 20. ASP.net ListBox貨幣格式化
- 21. 貨幣格式化語言?
- 22. 貨幣格式化MVC
- 23. SQL to_char貨幣格式化
- 24. 貨幣格式化問題
- 25. Rails貨幣格式化
- 26. 以百分比格式化數字
- 27. JFormattedTextField格式化百分比數字?
- 28. C#從數據庫格式化貨幣
- 29. Javascript函數格式化爲貨幣
- 30. Java的字符串/數字/貨幣格式化功能
根據我的理解,十進制是任何高精度值的首選格式 – devshorts
請不要包含關於問題標題中使用的語言的信息,除非在沒有它的情況下沒有意義。標籤用於此目的。 –