[解決済み] 浮動小数点数の宣言に "f "が必要なのはなぜですか?
2023-03-20 20:47:30
質問
例
float timeRemaining = 0.58f;
なぜ
f
が必要なのでしょうか?
どのように解決するのですか?
floatの宣言は2つの部分を含んでいます。
-
この宣言では、変数
timeRemaining
は型float
. -
値を割り当てます。
0.58
をこの変数に代入します。
その2で問題が発生します。
右辺は勝手に評価されます。C#の仕様によると、接尾辞のない小数点を含む数値は、解釈として
double
.
ということで、今、私たちは
double
型の変数に代入します。
float
から
double
. このような変換はありません。なぜなら、変換の際に情報が失われる可能性があるからです(この場合、情報は失われます)。
コンパイラが使う値は実際には0.58ではなく、0.58に最も近い浮動小数点値、つまり0.5799999999998655962351581366だからです...そのため
float
で 0.5799946057796478271484375 、そして
double
.
厳密には
float
は必要ありません。を使わなくても済むように
f
サフィックスの使用を避けるには、値を
f
:
float
関連
-
[解決済み】クロススレッド操作が有効でない。作成されたスレッド以外のスレッドからアクセスされたコントロール
-
[解決済み】Unity 「関連するスクリプトを読み込むことができません」「Win32Exception: システムは指定されたファイルを見つけることができません"
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] C#の正しいバージョン番号を教えてください。
-
[解決済み] 文字列をfloatやintにパースするにはどうしたらいいですか?
-
[解決済み] なぜGCCはa*a*a*a*aを(a*a*a)*(a*a*a)に最適化しないのでしょうか?
-
[解決済み] 文字列が数値(float)であるかどうかを確認するにはどうすればよいですか?
-
[解決済み] 0.1fを0にすると、なぜ10倍もパフォーマンスが落ちるのですか?
-
[解決済み] EqualsメソッドがオーバーライドされたときにGetHashCodeをオーバーライドすることが重要な理由は何ですか?
-
[解決済み】大文字・小文字を区別しない「Contains(string)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Entity Framework 4.1でエンティティに関連オブジェクトを追加する際に、エンティティオブジェクトをIEntityChangeTracker.の複数のインスタンスから参照できない。
-
[解決済み】パディングが無効で、削除できない?
-
解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C# [解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C#.
-
[解決済み】"The ConnectionString property has not been initialized "を修正する方法
-
[解決済み】「入力文字列が正しい形式ではありませんでした」エラーの解決方法は?[重複しています]。
-
[解決済み】ORA-01008: すべての変数がバインドされていません。これらはバインドされています。
-
[解決済み】WPFでXamlファイルにコメントを追加する方法は?
-
[解決済み】ファイルへの読み書きの際に共有違反のIOExceptionが発生する C#
-
[解決済み】ランダムなブーリアンを生成する最速の方法
-
[解決済み】スレッド終了またはアプリケーションの要求により、I/O操作が中断されました。