は:値として:を印刷し、私は次のコードを持っている本当に小さな浮動小数点数
float test = 1/(10^(15));
std::cout << "test: " << test << std::endl;
しかし、私は「0テスト」を取得します。 "test:0.000000000000001"が欲しい。
どうすればよいですか?
は:値として:を印刷し、私は次のコードを持っている本当に小さな浮動小数点数
float test = 1/(10^(15));
std::cout << "test: " << test << std::endl;
しかし、私は「0テスト」を取得します。 "test:0.000000000000001"が欲しい。
どうすればよいですか?
ここには複数の問題があります。
10^15
「^」が指数演算子になると予想されます。つまり、10は15乗に上げられます。
これはありません。 CおよびC++では、「^」はビット単位の排他的論理和演算子です。
第2の問題は、式のすべての値が整数値であることです。これは、(1/(10^15))
が次のように計算されることを意味します。
1)10^15 = 5、^
は実際にはビット単位の排他的論理和演算子です。
2)1月5日= 0、これらは整数値であるため、これはあなたが0
の値を取得し、なぜこの問題を解決する最良の方法は、科学的表記法を使用しているされた整数除算、次のとおりです。
float test = 1/(1e15);
std::cout << "test: " << test << std::endl;
科学的表記は同時に2つの目的を果たします.1つは正しい値を、2つは自動的に浮動小数点値なので、除算は浮動小数点除算として実行されます。
私は10の非ベースをどうやってしますか? 7^15、7は私の基底、15は私の指数と同じですか? – daemoner119
[pow()ライブラリ関数](http://manpages.courier-mta.org/htmlman3/pow.3.html)を使用してください。 –
'1e-15'は' 1/1e15'よりも良いかもしれません.... –
floatの代わりにdoubleを試してみるとよいでしょう。http://stackoverflow.com/questions/28045787/how-many-decimal-places-does-the-primitive-float-and-double-support – SnoozeTime
'1 /( 10 ^(15)) ' - それはあなたが思っていることを'^'はしません。 – PaulMcKenzie
@ PaulMcKenzieおそらくサイトがC++を書いてタグ付けしたときでもタグとして "c"を提案しているからです。 –