比较 C# 中的双精度值

2024-02-21

I've a double变量称为x。 在代码中,x被赋值为0.1我在“if”语句中检查它比较x and 0.1

if (x==0.1)
{
----
}

不幸的是它没有进入if陈述

  1. 我应该使用Double or double?

  2. 这背后的原因是什么?您能为此建议一个解决方案吗?


由于计算机如何存储浮点值,这是一个标准问题。在这里搜索“浮点问题”,您会找到大量信息。

简而言之 – float/double 无法存储0.1恰恰。总是会差一点。

您可以尝试使用decimal以十进制形式存储数字的类型。因此0.1将能够精确地表示。


您想知道原因:

float/double 存储为二进制分数,而不是十进制分数。为了显示:

12.34用十进制表示法(我们使用的)表示


1 * 101 + 2 * 100 + 3 * 10-1 + 4 * 10-2  

计算机以相同的方式存储浮点数,只不过它使用基数2: 10.01 means


1 * 21 + 0 * 20 + 0 * 2-1 + 1 * 2-2  

现在,您可能知道有些数字无法用我们的十进制表示法完全表示。例如,1/3用十进制表示是0.3333333…。二进制表示法中也会发生同样的情况,只不过无法精确表示的数字不同。其中有数1/10。用二进制表示法是0.000110011001100….

由于二进制记数法无法精确存储,因此采用四舍五入的方式存储。因此你的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

比较 C# 中的双精度值 的相关文章

随机推荐

  • JBoss EAR 部署顺序

    我有 5 个 EAR 需要部署 其中之一 local configuration ear 0 3 5 SNAPSHOT ear 是所有其他项的依赖项 并且它们在部署时需要它 即local configuration ear 0 3 5 SN
  • 使用 Angular 和 NodeMailer 发送电子邮件

    最近好吗 我正在尝试弄清楚如何使用 Angular 5 和 Node js 使用 nodemailer 发送电子邮件 我想要存档的是 当某些用户在页面中进行预约时 系统会获取提供的电子邮件 并在用户单击 安排我的 按钮时向用户发送一些信息
  • ColdFusion 条件记录计数

    好吧 SO 用户 这是一个看似不可能出错的条件语句 这很简单 但是 我不明白为什么它不能按预期方式工作
  • ASP NET Core MVC - 如何配置进程外会话状态?

    有没有办法使用 ASP NET Core MVC 配置进程外会话状态 使用 Windows 状态服务器或 SQL Server 重要的是会话数据由缓存支持 您需要将 IDistributedCache 实现添加到您的应用程序服务中 而不是内
  • Html2Pdf -Codeigniter -图像未加载

    我正在使用 HTML2PDF 库作为 codeigniter See https github com aiwmedia HTML2PDF CI https github com aiwmedia HTML2PDF CI我的问题是我无法使用
  • 使用 Unity 新输入系统的多个控制器

    我正在尝试将新的 Unity 输入系统与多个控制器一起使用 我尝试为每个角色创建输入操作 但这不起作用 所有角色同时移动 看起来角色并不关心控制器 而是关心输入 而不管控制器如何 也许我需要等待输入系统的最终版本 但是 我真的不想使用旧系统
  • 将微调器添加到 ActionBar(而不是导航

    我使用答案中的第二个选项向我的 ActionBar 添加了一个微调器here https stackoverflow com questions 8312344 how to add a dropdown item on the actio
  • Visual Studio - 如何使用相同的源创建两个项目

    我的解决方案由 2 个可执行项目和几个 dll 组成 Project1 是智能设备项目 Project2 是 Windows 窗体项目 这两个项目都使用相同的库 原因是我想在将库部署到设备上之前在 PC 上测试它 问题是 DLL 项目类型可
  • 延迟作业和 Mandrill:未初始化常量 Mandrill::API

    我有邮件服务 用户可以上传包含电子邮件和其他一些用户相关数据的 xls 文件来发送电子邮件活动 我遇到了一些超时问题 因为它需要几秒钟的时间来处理 因为我对每封要发送的电子邮件进行了一些验证和配置 例如 将记录保存到数据库 检查过去 30
  • 文件类型的可可图标?

    如果我有一个文件 我可以通过执行以下操作来获取图标 NSImage iconImage NSWorkspace sharedWorkspace iconForFile myFile png 但如果我只是想获取特定文件类型的图标 例如与 pn
  • 在 Apple 平台的 AArch64 汇编中,如何在一行中编写多个语句?

    我正在将一些 Arm64 汇编语言移植到 M1 其中一些是由 C 预处理生成的 其中单个 define宏生成多个以分号分隔的语句 不幸的是 在 M1 上 汇编器将分号视为注释字符 例如 define DEFUN NAME globl NAM
  • 可选框架不起作用(CoreAudioKit 不在模拟器上)

    为了让 MIDI 通过蓝牙工作 我需要使用CoreAudioKit框架 这工作完美 但我无法在模拟器上编译 使框架 可选 没有帮助 错误是ld framework not found CoreAudioKit 我认为它应该按照the doc
  • Azure-Container-Service 中的安装卷不适用于 traefik.toml 和 /var/run/docker.sock

    构建从 VSTS 到 Azure container service 的 CI CD 管道 我在安装 traefik toml 和 docker sock 文件时遇到了问题 部署使用 SSH 隧道创建文件夹 Deploy 并复制 docke
  • C# 有异步函数调用同步函数或同步函数调用异步函数

    我正在编写一个 C Net 4 5 库 用于执行常见的 sql 数据库操作 备份 恢复 执行脚本等 我希望每个操作都具有同步和异步函数 因为控制台和 GUI 应用程序都将使用该库 但我不想到处重复代码 所以在我看来 我有两个选择 编写在同步
  • 使用 insertWithOnConflict 进行更新或插入

    我需要插入或更新 我找到了 SQLiteDatabase 的 insertWithOnConflict 方法 但我不知道它如何检查该条目是否已存在 理论上 我需要一个 Where 参数来检查某个 ID 是否存在 如果存在 它应该替换所有其他
  • .R中的第一个函数

    我不明白 R 中 First 函数的意义 我的原因是 Rprofile 中的任何代码都将在 R 启动时被获取并执行 this First lt function library devtools and this library devto
  • WordPress:如何按 ACF 自定义字段对内容进行排序?

    通过使用高级自定义字段插件 我创建了一个包含 6 种成员资格类型的选择下拉列表 我使用此自定义字段的所有 列表 都被分配为 6 个字段之一 我想通过以下方式显示所有 列表 终极加号最终的专业的商业的商业 Free 按照这个特定的顺序 那些支
  • 将 JavaScript 变量发送到 PHP 变量 [重复]

    这个问题在这里已经有答案了 首先我认为我必须将 JavaScript 转换为 PHP 但后来我发现我不能 因为服务器和客户端执行 所以现在我只想发送一个变量 到 PHP 变量 当我点击一个按钮时 JavaScript 中的该函数就会执行 现
  • Java 和 .Net 正则表达式

    Java 和 Net Framework 正则表达式模式之间的区别 我正在尝试转换我的 Net Framework 但模式无效 谁能指出正则表达式模式的主要区别 例如我们如何命名java中的分组结构等等 有很多差异总结在这里 http ww
  • 比较 C# 中的双精度值

    I ve a double变量称为x 在代码中 x被赋值为0 1我在 if 语句中检查它比较x and 0 1 if x 0 1 不幸的是它没有进入if陈述 我应该使用Double or double 这背后的原因是什么 您能为此建议一个解