簡體   English   中英

C#中的十六進制到浮點轉換

[英]Hex to Float Conversion in C#

我有一個要轉換為浮點數的十六進制值0x492655FE。 我的代碼是

uint num = uint.Parse(hexString, System.Globalization.NumberStyles.AllowHexSpecifier);
byte[] floatVals = BitConverter.GetBytes(num);
BitConverter.ToSingle(floatVals, 0).Dump();

結果:681311,9

但是在ModbusPoll程序中:顯示浮點運算反結果: 681311,8750

我嘗試了另一個代碼。 但是結果是一樣的。 我該怎么辦?

根據 0x492655FE,單精度精確地代表6.81311875E5或681311.875(十進制)。 如果您在小數點后打印更多數字,您將獲得相同的輸出

但是float僅尾數有23位,相當於精度的6-7十進制數字。 其余的通常只是噪聲,因為2的冪不能精確表示十進制小數形式的數字,因此可以安全地舍入到前6-7個數字

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM