2013-12-09 33 views
1

如果有浮標的最大範圍? (我的意思是有其他規格比IEEE754或使用非常大的浮動表示的異國平臺)。C規格浮點數的最大位數

我想知道這一點,因爲我從基於Semmle分析器這樣的錯誤:

sprintf(acKey, "Equity(0,%f)", dDate); 

錯誤:此轉化可產生長度328,這超過了200

分配的緩衝區大小的字符串

其中acKey是尺寸的局部字符陣列200

由於

+3

誤差不談論浮動的大小,它談到了浮動的字符串表示。 – Devolus

+0

是的,只是更新了標題。 – GaTTaCa

+0

它是一個char數組。抱歉錯字。 – GaTTaCa

回答

3

如果該值的dDate-0x1.fffffffffffffp1023,則%f格式說明生產「-179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000」,它包含317個字符。在格式字符串和空終止符中添加十個其他字符的結果爲328個字符。

-0x1.fffffffffffffp1023是最大的幅度有限負數在IEEE-754的64位二進制浮點表示的。雖然它沒有用格式化的十進制數字表示的精度表示,但確實代表了該數字。 (C標準可能允許有些不同的顯示,比如顯示零點而不是確切的數字,但顯示的數字應該是相同的,一個好的C實現將顯示所有確切的數字數字。)

+0

'1/* - */+(DBL_MAX_10_EXP + 1)+(1 + 6)/ * .000000 */+ 10 + 1/* OP&term * /'? – chux