C++では整数を持ち、float/doubleに変換して整数に変換します。 2つの整数は常に同じであることが保証されていますか?浮動小数点数の範囲が整数の範囲をカバーしているとします。intをfloat/doubleに変換した後、常に同じに変換しますか?
1
A
答えて
1
必ずしも32ビット整数と32ビット浮動小数点(これはかなり一般的です)を使用している場合、整数から浮動小数点への変換の間に何らかの丸め誤差が生じる可能性があります実際の数(仮数)を格納するのに24ビットしか持たない。
しかし、Cの基本型の正確なサイズは厳密には定義されていないので、この変換が可能です(例えば、floatが64ビットと32ビットの整数として格納されている場合)。
基本的には、関心のあるシステムで整数のサイズを表し、十分に大きな仮数で浮動小数点値を使用するようにしてください。
2
具体的な反例として、それは常に私のシステム出力のフロート
#include <iostream>
#include <limits>
int main(){
int x = std::numeric_limits<int>::max();
float f = x;
int xf = f;
double d = x;
int xd = d;
std::cout << x << '\n'
<< f << '\n'
<< xf << '\n'
<< d << '\n'
<< xd << std::endl;
return 0;
}
の場合ではありません表示するフロートの仮数部は、/ doubleとして多くのビットを持っている場合のみ
2147483647
2.14748e+09
-2147483648
2.14748e+09
2147483647
+0
これらのキャストは必要ありません。 'std :: endl'もありません。 '' \ n ''は' std :: endl'が行う余分なものを一切使わずに行を終了します。 –
関連する問題
- 1. intを文字列に変換した後に常に0を返す
- 2. intをcharに変換しますか?
- 3. charをintに変換しますか?
- 4. varcharをINTに変換するときに変換が失敗しました
- 5. 即時変換で同じ変換をしていますか?
- 6. intに変換する前にnullフィールドをゼロに変換しますか?
- 7. オブジェクトをintに変換します
- 8. char crをintに変換します
- 9. C++は:intに変換し、
- 10. 変換intは、私は、データフレームに変換したいパンダDATAFRAME
- 11. バイナリ文字列を同じ表現でintに変換する
- 12. pandasがintに変換されないintに変換する
- 13. while文字列をintに変換した後
- 14. ハスケルで[IO Int]をIO [Int]に変換しますか?
- 15. intをnullable intに変換しますか?
- 16. doubleをint型に変換した文字列に変換する
- 17. const intに変換
- 18. intを文字列に変換してからintに戻す
- 19. longを2 intに変換し、逆も同様です
- 20. intをパーセントまたは小数点に変換します。
- 21. cstringまたはstringをintに変換します
- 22. varchar値 'xxx'をデータ型intに変換するときに変換に失敗しました
- 23. varchar値をint型に変換するときに変換に失敗しました
- 24. nvarchar値 'B'をデータ型intに変換するときに変換に失敗しました
- 25. varchar値 '7:00'をデータ型intに変換するときに変換に失敗しました
- 26. varchar値 '' .... "'をデータ型intに変換するときに変換に失敗しました
- 27. Laravelが "nvarchar値 '[]'をデータ型intに変換するときに変換に失敗しました"
- 28. SQLでvarchar値をデータ型intに変換するときに変換に失敗しました
- 29. SSMS 2008 varchar値 '2.126'をデータ型intに変換するときに変換に失敗しました
- 30. varchar値 '*'をデータ型intに変換するときにSQL変換に失敗しました
整数として。 –
それはそれを元に戻す方法によって異なります。 int(float_version + 0.5)==オリジナル_int。 int(float_version)はそうではないかもしれません。 – goldcode