C# double类型变量比较分析

 更新时间:2020年12月09日 10:07:43   作者:川master  
这篇文章主要介绍了C# double类型变量比较分析,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

double类型变量

怎么比较大小

通过使用double.equals(doubale a,double b)进行比较时,发现两个数值不是相等。

图中sum为从0加0.1累计到1,按数学计算应该为1.0,但是在计算机中计算为0.9999999999,通过double.equals或者直接用==进行等量判断时,发现不相同。

这说明double类型不能直接进行等量判断,那么怎么进行比较呢?

类型转换为decimal

将float模型转换成decimal可以直接进行判断了.

可以看出两个值都是1,这样就可以直接进行比较了。

综上所述,在进行数值比较时,如果使用double类型时,不能直接进行等量判断,需要通过两值相减小于某个定义的值如0.0000001来判断两值相等或者转换为其他类型进行判断。

补充知识:c#中Double类型的使用场景

【Double】

double类型在程序中定义变量会经常使用,如果使用不当,会导致实际值精度问题出现,例子如下:

 Double d1 = 66.09;
 Double d2 = 89.943;
 Double d3 = 156.033;
 d2 = d1 + d2; //两个double 类型相加的结果是:156.03300000000002
 Console.WriteLine(d2.CompareTo(d3)); //导致最终的结果是d2的值大于d3的值,但是实际看到的值是相等的
 Console.ReadLine();

【解决方案】

使用Decimal类型定义后保证小数的精确度,两个相同类型的decimal相加后可以确保程序不会自动添加进度到结果值中,这样就能够避免出现以上情况发生

 Decimal d1 = 66.09M;
 Decimal d2 = 89.943M;
 Decimal d3 = 156.033M;
 d2 = d1 + d2;
 Console.WriteLine(d2.CompareTo(d3));
 Console.ReadLine();

以上这篇C# double类型变量比较分析就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • C#委托与匿名委托详解

    C#委托与匿名委托详解

    这篇文章主要为大家详细介绍了C#委托与匿名委托的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • C#泛型类创建与使用的方法

    C#泛型类创建与使用的方法

    这篇文章主要为大家详细介绍了C#泛型类创建与使用的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • C#窗体实现点餐系统

    C#窗体实现点餐系统

    这篇文章主要为大家详细介绍了C#窗体实现点餐系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • C# Winform实现复制文件显示进度

    C# Winform实现复制文件显示进度

    这篇文章主要介绍了C# Winform实现复制文件显示进度,用进度条来显示复制情况,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • DevExpress之ChartControl实现饼状图百分比演示实例

    DevExpress之ChartControl实现饼状图百分比演示实例

    这篇文章主要介绍了DevExpress之ChartControl实现饼状图百分比演示的方法,实例讲述了窗体与图形绘制函数的用法,需要的朋友可以参考下
    2014-10-10
  • C#将List转换为只读的List方法与技巧

    C#将List转换为只读的List方法与技巧

    在 C# 编程的广阔世界里,数据的安全性与稳定性始终是我们关注的焦点,当涉及到集合数据的处理时,有时我们会面临这样一个关键需求:将List转换为只读的List,所以本文给大家介绍了使用C#将List转换为只读的List的方法与技巧,需要的朋友可以参考下
    2025-01-01
  • windows下C#定时管理器框架Task.MainForm详解

    windows下C#定时管理器框架Task.MainForm详解

    这篇文章主要为大家详细介绍了windows下C#定时管理器框架Task.MainForm的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • C#编写一个网游客户端的完整步骤

    C#编写一个网游客户端的完整步骤

    这篇文章主要给大家介绍了关于C#编写一个网游客户端的相关资料,文中通过示例代码以及图文介绍的非常详细,对大家学习或者使用C#具有一定的参考学习价值,需要的朋友可以参考下
    2021-11-11
  • c#动态编译执行对象方法示例 运用映射机制创建对象

    c#动态编译执行对象方法示例 运用映射机制创建对象

    本示例核心技术是运用.NET动态编译技术+.NET映射技术,把一个代码块中的代码,动态编译成程序集后,在运用映射机制,创建对象示例,调用对象方法
    2014-01-01
  • WinForm入门与基本控件使用详解

    WinForm入门与基本控件使用详解

    本文主要介绍了WinForm入门与基本控件使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06

最新评论