フロートアンダーフローを扱うC Primer Plus演習の1つを解いています。タスクは、それをシミュレートすることです。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;
}
結果は、私が2と4で分float値の除算のための低い精度を期待したが、それは精度がOKで、アンダーフロー状況が存在しないようです
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あなたのコメントは本当ですが、コードがIEEE 754 [binary32](https://en.wikipedia.org/wiki/Single-precision_floating-point_format)を使用していた場合、OPのいわゆる「精度があまり期待できません」には影響しません)。 – chux