相关疑难解决方法(0)

将System.Double与'0'(数字,int?)进行比较的正确方法

对不起,这可能是一个简单的愚蠢问题,但我需要知道确定.

我有这个if表达,

void Foo()
{
    System.Double something = GetSomething();
    if (something == 0) //Comparison of floating point numbers with equality 
                     // operator. Possible loss of precision while rounding value
        {}
}
Run Code Online (Sandbox Code Playgroud)

这个表达是否与...相等

void Foo()
{
    System.Double something = GetSomething();
    if (something < 1)
        {}
}
Run Code Online (Sandbox Code Playgroud)

?因为那时我可能会遇到问题,输入if例如0.9的值.

c# compare

82
推荐指数
5
解决办法
8万
查看次数

检查double是否是C#中的整数有什么好方法?

可能重复:
如何确定十进制/双精度是否为整数?

我有一个double类型的变量,我想检查它是否是一个整数.

目前我有

public bool CheckIfInteger(double number)
{
    return number.ToString().Contains(".") == false;
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

更新:对不起我没有意识到混淆的可能性,整数我的意思是整数的数学定义,即自然数和非零自然数的负数.

.net c# double types integer

18
推荐指数
4
解决办法
1万
查看次数

C#,确定*如果*double可以成为一个没有任何损失的int

可能重复:
如何确定十进制/双精度是否为整数?

我有一个独特的情况,其中所有数字必须保存为double我的数据库中的数据类型,但只有在某些条件下超出整数级别的精度才有价值.

起初,当我发现int这些独特的分数发生时,我试图使用然后抽象到一个新表,但在这样做几周之后,我现在可以看到它过于愚蠢并且浪费我的时间.

我知道我可以double变成一个int.这很容易.我知道如何翻译它.我不知道的是如何测试翻译它.我基本上希望想出一个简短易懂的方法

这个数字真的是双数,还是只是一个整数?

如果它是一个int(并且大部分时间都是),那么我将把它变成一个并对其进行处理.但由于要求的独特性,我还是要将数据库中的所有内容保存为double.

有任何想法吗?我知道这是一个新手问题,我已经搜索了好几个小时,但我仍然感到很困惑.

c#

10
推荐指数
3
解决办法
1733
查看次数

以对数方式记录1,10,100,1000等

是否有一种更有效的方法来做到这一点,有些事情只是感觉不对劲?我正在寻找以对数方式记录最有效的方法.

    public bool Read()
    {
        long count = Interlocked.Increment(ref _count);
        switch (count)
        {
            case 1L:
            case 10L:
            case 100L:
            case 1000L:
            case 10000L:
            case 100000L:
            case 1000000L:
            case 10000000L:
            case 100000000L:
            case 1000000000L:
            case 10000000000L:
            case 100000000000L:
            case 1000000000000L:
            case 10000000000000L:
            case 100000000000000L:
            case 10000000000000000L:
            case 100000000000000000L:
            case 1000000000000000000L:
                _logger.LogFormattable(LogLevel.Debug, $"{count} Rows Read");
                break;
        }

        return _reader.Read();
    }
Run Code Online (Sandbox Code Playgroud)

更新:

这是我的微基准测试.

  • 方法1:Übercoder跟上状态的方式
  • 方法2:我使用big switch语句
  • 方法3:Markus Weninger用漂亮的数学函数的方法

因为对我而言,没有记录就读取了100,000,000条记录需要大约20分钟,那么额外的4秒就没有了.我将采用美丽的数学方式做事.Mathod3在我的场景中胜出.

Run time for 100,000,000 iterations averaged over 100 attempts

Method1 Max: 00:00:00.3253789
Method1 Min: …
Run Code Online (Sandbox Code Playgroud)

.net c# logarithm

5
推荐指数
1
解决办法
358
查看次数

检查变量是否为整数的最佳方法

我需要检查一个变量是否是一个整数,我有很多简单的解决方案.

第一个

if(floor(foobar)== foobar)

另一个

if(d%1 == 0)

另一个是将此数字转换为字符串并用点(.)分割,并检查第二个数字是否为"00"

d.toString().分裂( '')[1 /] == "00"

但我认为这不是最佳做法.

很多这种类型的方式,我想要一个可以被所有人接受的标准解决方案.

c#

-3
推荐指数
1
解决办法
3275
查看次数

标签 统计

c# ×5

.net ×2

compare ×1

double ×1

integer ×1

logarithm ×1

types ×1