2
我正在解決處理float下溢的C Primer Plus練習之一。任務是模擬它。我就是這麼做的:C語言中的浮點下溢
#include<stdio.h>
#include<float.h>
int main(void)
{
// print min value for a positive float retaining full precision
printf("%s\n %.150f\n", "Minimum positive float value retaining full precision:",FLT_MIN);
// print min value for a positive float retaining full precision divided by two
printf("%s\n %.150f\n", "Minimum positive float value retaining full precision divided by two:",FLT_MIN/2.0);
// print min value for a positive float retaining full precision divided by four
printf("%s\n %.150f\n", "Minimum positive float value retaining full precision divided by four:",FLT_MIN/4.0);
return 0;
}
結果是
Minimum positive float value retaining full precision: 0.000000000000000000000000000000000000011754943508222875079687365372222456778186655567720875215087517062784172594547271728515625000000000000000000000000
Minimum positive float value retaining full precision divided by two: 0.000000000000000000000000000000000000005877471754111437539843682686111228389093327783860437607543758531392086297273635864257812500000000000000000000000
Minimum positive float value retaining full precision divided by four: 0.000000000000000000000000000000000000002938735877055718769921841343055614194546663891930218803771879265696043148636817932128906250000000000000000000000
我預期分鐘浮點值除以精度要求不高由兩個和四個,但它似乎精度是確定的,沒有下溢的情況。這怎麼可能?我錯過了什麼?
非常感謝您
參數不匹配的原型函數的參數進行默認的促銷活動。 –
@Kerrek SB您的評論是真實的,但不會影響OP所謂缺乏「期望精度更低」,如果代碼使用IEEE 754 [binary32](https://en.wikipedia.org/wiki/Single-precision_floating-point_format )。 – chux