0に限りなく近い値 – プログラミング – Home

通知
すべてクリア

[解決済] 0に限りなく近い値


たけぞう
 たけぞう
(@たけぞう)
ゲスト
結合: 22年前
投稿: 3
Topic starter  

ある処理で異常終了した場合に”0に限りなく近い値”をセットしたいのですが
具体的に”限りなく近い値”とはどんな値ですか?
また、その方法はどうするのですか?

正常時はdoubleで宣言された値です。
double sigma;

sigma = 1.2345 // 正常時はこのような値が入る

sigma = ????? // 異常時は限りなく0に近い値が入る

よろしくお願いします。


引用未解決
トピックタグ
sugar
 sugar
(@sugar)
ゲスト
結合: 23年前
投稿: 448
 

限りないわけですから、数学的な意味でのゼロに限りなく近い値を
限りのあるdouble型で表現するのは難しいんじゃないでしょうか。

こういう場合、たけぞうさんが作るプログラムの中で
どこまでの精度を保障するのかを決めたらどうでしょう。
例えば小数点以下10桁までとするなら、
0.0000000001
が、たけぞうさんが作るプログラムの中で一番ゼロに限りなく近い数値となるわけです。

これじゃダメ?


返信引用
tib
 tib
(@tib)
ゲスト
結合: 23年前
投稿: 468
 

>具体的に”限りなく近い値”とはどんな値ですか?
ε (イプシロン)でしょうねぇ、やっぱり。

float.hで「DBL_EPSILON」というマクロで定義されています。
具体的には「2.2204460492503131e-016」という値で、
「1.0+DBL_EPSILON !=1.0 になるような最小の数」と定義されています。


返信引用
YuO
 YuO
(@YuO)
ゲスト
結合: 23年前
投稿: 252
 

DBL_EPSILONよりDBL_MINの方じゃないかと。

DBL_EPSILONが
>与えられた浮動小数点型で表現可能な1より大きい最小の値と1との差
で,DBL_MINが
>最小の正規化された正の浮動小数点数
ですから。
#JIS X3010より。


返信引用
たけぞう
 たけぞう
(@たけぞう)
ゲスト
結合: 22年前
投稿: 3
Topic starter  

いろいろご回答ありがとうございます。
まだ試していないのですが、

下記のように、マクロをそのまま変数に代入できるのでしょうか?

double sigma;
sigma = DBL_EPSILON // 異常時は限りなく0に近い値が入る
// または
sigma = DBL_MIN // 異常時は限りなく0に近い値が入る

よろしくお願いします。


返信引用
YuO
 YuO
(@YuO)
ゲスト
結合: 23年前
投稿: 252
 

試したらすぐわかることのなのだから,試したらどうですか?

まっ,今回の場合,float.hで定義されるマクロは全て式の値として利用可能なものですから,
変数への代入は可能です。


返信引用
kazuma
 kazuma
(@kazuma)
ゲスト
結合: 23年前
投稿: 217
 

> ある処理で異常終了した場合に”0に限りなく近い値”をセットしたいのですが

その「0に限りなく近い値」の使い道はなんでしょうか?

場合によっては、
別のフラグでも用意してそのことを示したほうがよいのでは?


返信引用
たけぞう
 たけぞう
(@たけぞう)
ゲスト
結合: 22年前
投稿: 3
Topic starter  

> その「0に限りなく近い値」の使い道はなんでしょうか?

ある機能でファイルとDBに出力する処理があります。
処理の途中でエラーが発生した場合、DBにはNULL値を
ファイルには0に限りなく近い値をセットすることになった
ためです。

この問題は解決しました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました