2012-04-08 64 views
-1

我正在通過第三方庫從PLC讀取值,但是當保存爲雙精度值時,該值看起來是以科學計數法表示的。以更具可讀性的格式顯示雙倍的科學記數法

在PLC的值是1.234然而,調試應用程序時,該值被存儲在雙爲5.27326315571927E-315

我的標籤顯示這一點,但是我想它顯示爲1.234而是一個作爲科學計數法。

我該如何轉換?

+3

FYI:'5.27326315571927E-315' ='1.234'。這是'〜0' – 2012-04-08 22:19:18

+1

我想你需要顯示代碼,但它聽起來像你是一個浮動放入一個雙向或沿着這些線 – 2012-04-08 22:23:56

回答

2

作爲一個瘋狂的猜測,我認爲你應該從你的庫中讀取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現在

+0

有趣!我改變它將該值轉換爲浮點數,現在我得到值1.234。他們提供的示例代碼表示要轉換爲double,並且我已經在之前的項目上完成了這項工作,並且它工作正常......但這次不行!謝謝! – 2012-04-08 22:34:06

相關問題