質問

非浮動小数点演算の種類、例えばための

limits.h指定限界INT_MININT_MAX。これらの値は、int型を使用して表現できることが最も負と最も正の値でます。

float.hでは、FLT_MINFLT_MAXの定義があります。

:次の操作を行う場合
NSLog(@"%f %f", FLT_MIN, FLT_MAX);

あなたは次のような出力を得ます

FLT_MIN = 0.000000, FLT_MAX = 340282346638528859811704183484516925440.000000

FLT_MAXあなたが期待するように、非常に大きな数であるが、なぜFLT_MINゼロがない代わりに、本当に大きな負の数の?

役に立ちましたか?

解決

これは実際にはゼロではないのですが、あなたはprintfを使用してNSLog%fを使用して、それを調べている場合、それはゼロのように見えるかもしれません。

:(少なくとものMac OS X 10.6.2で)float.hによれば、FLT_MINは以下のように記載されています
/* Minimum normalized positive floating-point number, b**(emin - 1).  */

のは、その文に注意:FLT_MINはゼロより最小値(正規化)番号大きいのことをいいます。 (はるかに小さい非正規化数があります)。

もしあなたが(負の数を含む)最小浮動小数点数、使用-FLT_MAXを望んでます。

他のヒント

「%F」の形式は、固定フォーマットで6小数点以下を印刷します。 FLT_MINがたくさん小さいので、それは固定小数点でゼロのように見えます。あなたは「%のE」または「%G」形式を使用する場合は、より良いフォーマットされた答えを得ると思います。同様FLT_MAX有する。

#include <float.h>
#include <stdio.h>
int main(void)
{
    printf("MIN = %f, MAX = %f\n", FLT_MIN, FLT_MAX);
    printf("MIN = %e, MAX = %e\n", FLT_MIN, FLT_MAX);
    return(0);
}


MIN = 0.000000, MAX = 340282346638528859811704183484516925440.000000
MIN = 1.175494e-38, MAX = 3.402823e+38

あなたが標準ヘッダーファイルからFLT_MINの値を印刷しようとするときはいつでも (あなたは、出力画面で見ているよう)float.hの、あなたは0.000000を取得します。 それは実際にはエラーではありません。あなたはフォーマット指定子は%fので、この結果を得ています。 一般的には%F小数点以下6桁の数字を印刷するが、この場合には署名し、負の値を使用すると、小数点以下の桁数を大量に印刷する必要があるほど小さいます。

私はdesired-を取得するために使用%の.54f(機種依存)を持っています (私のシステムのための0.000000000000000000000000000000000000011754943508222875)になります。

//お使いのシステムでこれを確認してください。

#include<stdio.h>
#include<float.h>
int main()
{
    printf("Minimum signed float %.55f\n",FLT_MIN);
    printf("Minimum signed float %e\n",FLT_MIN);
    return 0;
}

//出力: -

//最小フロート0.0000000000000000000000000000000000000117549435082228750に署名した。

//最小署名フロート1.175494e-038

私はあなたがCHAR_MINため0.000000を取得し、どのようにしている理由は、今、それはあなたに明確だと思います 同じ形式で正しい結果を得るためにspecifier.Thoughあなたはより良いフォーマットされた結果のために%eを使用することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top