我正在通過第三方庫從PLC讀取值,但是當保存爲雙精度值時,該值看起來是以科學計數法表示的。以更具可讀性的格式顯示雙倍的科學記數法
在PLC的值是1.234
然而,調試應用程序時,該值被存儲在雙爲5.27326315571927E-315
我的標籤顯示這一點,但是我想它顯示爲1.234
而是一個作爲科學計數法。
我該如何轉換?
我正在通過第三方庫從PLC讀取值,但是當保存爲雙精度值時,該值看起來是以科學計數法表示的。以更具可讀性的格式顯示雙倍的科學記數法
在PLC的值是1.234
然而,調試應用程序時,該值被存儲在雙爲5.27326315571927E-315
我的標籤顯示這一點,但是我想它顯示爲1.234
而是一個作爲科學計數法。
我該如何轉換?
作爲一個瘋狂的猜測,我認爲你應該從你的庫中讀取4個字節(浮點數)不是雙倍的(8個字節)。
由於5.27326315571927E-315
是差不多爲零。
double d = 5.27326315571927E-315;
byte[] b = BitConverter.GetBytes(d);
float f = BitConverter.ToSingle(new byte[] { b[0], b[1], b[2], b[3] }, 0);
f是1.2345
現在
有趣!我改變它將該值轉換爲浮點數,現在我得到值1.234。他們提供的示例代碼表示要轉換爲double,並且我已經在之前的項目上完成了這項工作,並且它工作正常......但這次不行!謝謝! – 2012-04-08 22:34:06
FYI:'5.27326315571927E-315' ='1.234'。這是'〜0' – 2012-04-08 22:19:18
我想你需要顯示代碼,但它聽起來像你是一個浮動放入一個雙向或沿着這些線 – 2012-04-08 22:23:56