[解決済み】 小数点/倍数が整数であるかどうかを判断する方法は?
2022-04-05 06:10:15
質問
10進数や2進数の値が整数であるかどうかを判断するにはどうしたらよいですか?
例えば
decimal d = 5.0; // Would be true
decimal f = 5.5; // Would be false
または
double d = 5.0; // Would be true
double f = 5.5; // Would be false
この値を知りたい理由は、プログラム上で
.ToString("N0")
または
.ToString("N2")
. 小数点以下の値がないのであれば、それを表示しないようにします。
どのように解決するのですか?
浮動小数点数の場合
n % 1 == 0
は、通常、小数点以下があるかどうかをチェックする方法です。
public static void Main (string[] args)
{
decimal d = 3.1M;
Console.WriteLine((d % 1) == 0);
d = 3.0M;
Console.WriteLine((d % 1) == 0);
}
出力します。
False
True
アップデートする
下記の @Adrian Lopez が述べているように、小さな値で比較すると
epsilon
は、浮動小数点演算の誤計算を破棄します。質問内容は
double
の値で、以下はより
浮動小数点演算の証明
の答えになります。
Math.Abs(d % 1) <= (Double.Epsilon * 100)
関連
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】GDI+、JPEG画像をMemoryStreamに変換する際にジェネリックエラーが発生しました。
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み】「namespace x already contains a definition for x」エラーの修正方法は?VS2010にコンバートした後に発生しました。
-
[解決済み】「...は'型'であり、与えられたコンテキストでは有効ではありません」を解決するにはどうすればよいですか?(C#)
-
[解決済み】OnCollisionEnter2Dが実行されない?
-
[解決済み】インデックスが範囲外でした。コレクションパラメータname:indexのサイズより小さく、非負でなければなりません。
-
[解決済み】IntPtrとは一体何なのか?
-
[解決済み】「namespace」なのに「type」のように使われる。
-
[解決済み】ファイルやアセンブリ、またはその依存関係の1つをロードできませんでした。
-
[解決済み】Nullableオブジェクトは値を持たなければならない?