相关疑难解决方法(0)

0.2 + 0.3!= 0.5 ......浮点型问题

可能重复:
C#float bug?0.1 - 0.1 = 1.490116E-08
比较C#中的双值问题

在我的应用程序中,我想测试float a = float b,然后执行一些操作.但是,我想知道,在浮点型0.2 + 0.3 == 0.5中返回false.

所以这是我的代码的一部分

float a = 0.3f;
float b = 0.2f;
float c = 0.5f;
   if (a + b == c)
          Console.WriteLine("true");
   else 
          Console.WriteLine("false");
   Console.WriteLine(a+b);
   Console.WriteLine(c);
Run Code Online (Sandbox Code Playgroud)

这是这一部分的结果

false
0.5
0.5
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚这里有什么问题......我可以使用double或decimal代替float,但我想知道这里有什么问题.感谢帮助.

.net c# floating-point

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

TextBox绑定到double并输入小于-1的负数时的问题

我将文本框绑定到Propery并输入小于-1的负数时出现问题 - 例如-0.45:

文本框:

<TextBox Text="{Binding Txt, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
Run Code Online (Sandbox Code Playgroud)

和财产:

  double txt;
    public double Txt
    {
        get { return txt; }
        set { txt = value; OnPropertyChanged("Txt"); }
    }
Run Code Online (Sandbox Code Playgroud)

似乎当我尝试输入-0.54时,它立即变为0,为什么?

c# wpf

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

C# - 字符串到数字

我再次回到我的一个问题和疑问.

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;

namespace compare_string
   {
     class Program
     {
        static void Main(string[] args)
        {
            string str1 = "85.8500000000000";
            string str2 = "85.85";
            double num1 = Convert.ToDouble(str1);
            double num2 = Convert.ToDouble(str2);
            if (num1 != num2)
            {
                 Console.WriteLine("Unequal");
            }
            else {
                 Console.WriteLine("Equal");
            }
             Console.ReadKey();
         }
    }
  }
Run Code Online (Sandbox Code Playgroud)

为什么要说两个数字是不相等的?提前致谢!

c#

0
推荐指数
2
解决办法
1236
查看次数

if或带有等于小数的变量的语句

我有这样的if语句

decimal var1, var2;
if(var1 == 0.00 || var2 == 0.00)
{
  ...
} 
Run Code Online (Sandbox Code Playgroud)

编译器显示错误:

运算符'=='不能应用于类型'decimal'和的操作数'double'

我也试过了

If(var1 = 0.00 || var2 = 0.00){
  //this
}
Run Code Online (Sandbox Code Playgroud)

编译器显示错误:

运营商'||' 不能应用于类型'decimal'和操作数'double'

我做的第三件事就是制作0.00一个像"0.00"以前的方法一样的字符串,只是为了看看它是否会做任何不同的事情.

c# if-statement

0
推荐指数
1
解决办法
2281
查看次数

C#浮动和双重bug

我有这个代码:

static void Main()
{
    float i;

    for (i = 0; i <= 100; i = i + 0.01F)
    {
        Console.WriteLine(i);

    }

}
Run Code Online (Sandbox Code Playgroud)

它打印我这个:

0
0.01
0.02
0.03
0.04
0.05
0.05999999
0.06999999
0.07999999
0.08999999
0.09999999
0.11
Run Code Online (Sandbox Code Playgroud)

这是一个错误还是我做错了什么?这有什么解决方案吗?

c#

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

如何正确使用Math.Pow()?

我想找到方程的所有正整数解, a^3 + b^3 = c^3 + d^3其中a,b,c,d是1到1000之间的整数;

for (int a = 1; a <= 1000; ++a)
{
    for (int b = 1; b <= 1000; ++b)
    {
        for (int c = 1; c <= 1000; ++c)
        {
            for (int d = 1; d <= 1000; ++d)
            {
                if (Math.Pow(a, 3) + Math.Pow(b, 3) == Math.Pow(c, 3) + Math.Pow(d, 3))
                {
                     Console.WriteLine("{0} {1} {2} {3}", a,b,c,d);
                }
            }
      }
}
Run Code Online (Sandbox Code Playgroud)

我知道d = Math.Pow(a^3 + b^3 - c^3, 1/3) …

c# algorithm

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

计算机是否开始正确存储0.1?

在学习浮点运算时,我发现了一些东西,我引用:'浮点数/双精度不能精确存储0.1".

SO上有一个问题指向同一件事,接受的答案也很有说服力.但是我想在我自己的计算机上试一试,所以我写下面的程序如下

double a = 0.1;

if (a == 0.1)
{
    Console.WriteLine("True");
}
else
{
    Console.WriteLine("False");
}

Console.Read();
Run Code Online (Sandbox Code Playgroud)

和控制台打印True.令人震惊,因为我已经说服了别的东西.任何人都可以告诉我浮点运算是怎么回事?或者我只有一台将数值存储为10的计算机?

c# floating-point precision ieee-754

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

switch 表达式必须是 bool

我是 C# 的新手,这段代码我试图使用 double 作为数据类型

using System;

namespace FirstProject
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Title = "My First Project";

            double num1, num2, div;

            Console.WriteLine("Enter The First Number :");
            num1 = double.Parse(Console.ReadLine());

            Console.WriteLine("Enter The Second Number :");
            num2 = double.Parse(Console.ReadLine());

            switch (num2)
            {
                case 0:
                Console.WriteLine("Alert Divide By Zero");
                    break;
                default:
                     div = num1 / num2;
                    Console.WriteLine("The Result Of Division Is " + div);
                    break;
            }          

            Console.ReadKey();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

该变量num2有一个警告Error 1 A switch …

c#

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

标签 统计

c# ×8

floating-point ×2

.net ×1

algorithm ×1

ieee-754 ×1

if-statement ×1

precision ×1

wpf ×1