簡體   English   中英

將科學計數法浮點值轉換為十進制變量(4gl,informix)

[英]convert scientific notation float value to a decimal variable (4gl, informix)

我們有一個帶浮點列的sql表,以科學計數形式存儲值。 我的值為-1.23E-256。 當我運行查詢並將查詢結果分配給變量時,我正在將此浮點值分配給十進制(15,2)。 但是由於這種科學的記號,所以沒有將值賦給4gl程序中的變量並引發錯誤。 我試圖使用轉換和強制轉換函數在選擇查詢中將科學計數法更改為十進制,但是會拋出錯誤“值很小,無法存儲為十進制”。 我想將那些float變量從數據庫中轉換為十進制格式的4gl程序中的變量。 我該如何實現?

不完全是。 您必須先將其轉換為浮點數,然后再轉換為十進制或其他任何形式:

select convert(decimal(15,2), convert(float, '-1.23E-256')) 

轉換為: 0.00

因此,您當然可以放棄該值,但至少它不會產生錯誤。

十進制[(p [,s])]和數字[(p [,s])]固定的精度和小數位數。 使用最大精度時,有效值為-10 ^ 38 +1到10 ^ 38-1。

浮動-1.79E + 308至-2.23E-308、0和2.23E-308至1.79E + 308

所以這是不可能的,因為數字太小了,你應該把它放在浮動

根據Wolfram Alpha的價值

-1.23E-256 = -1.23×10 ^ -256

這意味着您必須將小數點后移256次。 您正在嘗試使該TINY數字的精度為2。您的小數位1到253均為0。

因此,@ user2615302是正確的,您應該保持浮動

暫無
暫無

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

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