簡體   English   中英

在C#中,確定小數是否為“ int”的最佳方法是什么?

[英]In C#, what is the best way to determine if a decimal “is an int”?

我有一個十進制變量,我想確定它是否“是一個整數”

  public bool IsanInt(decimal variable)

因此,如果傳入的變量為1,我想返回true
如果是1.5,它將返回false
.5將是錯誤的
10將是真的

進行此檢查的最佳方法是什么?

干得好:

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(IsInt(3.0m)); // True
        Console.WriteLine(IsInt(3.1m)); // False
    }

    public static bool IsInt(decimal variable)
    {
        return ((variable % 1) == 0);
    }
}

基本上,該方法就是您所需要的。 我只是包括了整個控制台程序,以便您可以看到結果。

編輯:

因此,在對以下評論進行了頭腦風暴之后,我發現很難找到(如果不是不可能的話)(我還沒有找到方法)(如果提供的十進制值很高時)是decimal還是“ integer ”值。 小數比UInt64都具有更高的值。 運行以下代碼行時:

Console.WriteLine(Decimal.MaxValue - 0.5m);

輸出:

79228162514264337593543950334

...您將看到它不會在句點后顯示十進制值。 強制截斷有一個最大限制,因此您永遠不會看到0.5是該大值的一部分。 我的方法無法解決該限制。 我不確定在C#或.NET中是否可以執行此操作,但是我很高興。

有一篇很好的文章介紹了decimal可以做什么和不能做什么...比我認為MSDN更好:

http://www.dotnetperls.com/decimal

public bool IsInteger(decimal value)
{
    return value == Math.Round(value);
}

怎么樣

return Math.Round(n) == n

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM