私は秒単位の時間間隔であるdoubleを持っています。有効な値は0.0,0.5,1.0,1.5などです。このdoubleをintに安全に変換する方法は?
この値をintに変換する必要があります。しかし、私はこれを行うことはできません。何が起こることがある
int converted = (int)theDouble;
ので、私のダブルそのため、浮動小数点エラーのために0.999999999いうより1.000000000です。それはちょうど尾をカットし、私たちは1の代わりに0で終わるだろう。また、私の倍精度浮動小数点が0.9のとき、私は1のintが欲しい。1.1のとき、intを1にしたい。それは1.8です。intを2にします。
round()関数はありますが、Xcodeはこれに関するドキュメントを表示していません。ヘッダーは、それがダブルを返すことだけを伝えます。それで私は必要なものではありません。
その倍精度浮動小数点型の近似表現を取得する最も安全な方法は何ですか?二重ではあるが、私は決して0.5または1つの断片的な数字より高い精度を必要としない(私は数学の天才ではなく、正確な科学用語を知らない)。 math.h
で
int converted = (int)(round(theDouble));