两个不相等的浮点数相减是否可以得到0?

2024-02-26

在下面的例子中是否可以除以 0(或无穷大)?

public double calculation(double a, double b)
{
     if (a == b)
     {
         return 0;
     }
     else
     {
         return 2 / (a - b);
     }
}

当然,在正常情况下不会。但如果a and b距离很近,可以(a-b)结果是0由于计算精度?

请注意,这个问题是针对 Java 的,但我认为它适用于大多数编程语言。


在爪哇,a - b永远不等于0 if a != b。这是因为 Java 强制要求支持非规范化数字的 IEEE 754 浮点运算。来自spec http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.2.4:

特别是,Java 编程语言需要支持 IEEE 754 非规范化浮点数和渐进下溢,这使得更容易证明特定数值算法的所需属性。如果计算结果是非规格化数,则浮点运算不会“刷新为零”。

If an FPU http://en.wikipedia.org/wiki/Floating-point_unit非规范化数字 http://en.wikipedia.org/wiki/Denormal_number,减去不等数永远不会产生零(与乘法不同),另请参阅这个问题 https://stackoverflow.com/questions/19053681/causing-underflow-in-ieee-754-floating-point-format-using-subtraction.

对于其他语言,这取决于。例如,在 C 或 C++ 中,IEEE 754 支持是可选的。

也就是说,有可能的 https://ideone.com/fXdwW3对于表达式2 / (a - b)溢出,例如a = 5e-308 and b = 4e-308.

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

两个不相等的浮点数相减是否可以得到0? 的相关文章

  • 关于指针的c/c++问题(双指针)

    自从我学习 c 和 c 课程以来已经有一段时间了 我对 c 指针很好奇 我将在我的示例中使用 new 关键字 即使我知道 malloc 是 C 方式 我总是记得我的老师总是强迫我们使用指针 她永远不会接受数组的作业 她向我们证明 当您使用指
  • 尝试在整数后添加字符然后打印结果时出现奇怪的结果

    我正在尝试创建一个简单的欧姆定律计算器 所以我们的想法是你可以填写两个变量 然后它会计算第三个变量 当我创建这个程序时 我发现了一个小问题 我不明白它是如何发生的 不幸的是我无法找到答案 我尝试打印一个显示完整计算的字符串 用户填写的两个变
  • 对浮点数求反总是安全的吗

    考虑 double f foo double g f where foo 可以返回分配给的任何内容f is double g f 在 C 和 C 中安全吗 对于 IEEE 754 类型 显然是这样 但 C 和 C 并不限制浮点实现 与 Ja
  • 如何使用 cout 以全精度打印双精度值?

    In my 先前的问题 https stackoverflow com questions 553974 why does int55 54 in c我正在打印一个double using cout当我没有预料到的时候 它就被四舍五入了 我
  • 在 Perl 中使用 POSIX ceil() 出现意外结果

    我一生都无法弄清楚为什么以下会产生这样的结果 use POSIX my g 6 65 my t g 4 my r t g my n r g my c ceil n print c n n 我知道印记太棒了 抱歉 我已经为我的应用程序解决了这
  • 在php中将指数数转换为小数

    我有一个指数格式的浮点数 即4 1595246940817E 17我想将其转换为十进制数 例如 2 99 等 任何帮助将不胜感激 format number sprintf 似乎不适合我 你需要像 BC 这样更好的数学扩展数学 GMP ht
  • 如何使Python中的浮点值显示.00而不是.0?

    简单的问题 抱歉我无法弄清楚 我有一些数字是由 浮动 字符串 它们显示为 xxx 0 但如果确实是整数 我希望它们以 00 结尾 我该怎么做 Thanks EDIT Python 说 float 没有 cal format gt gt gt
  • 浮点转换和性能

    我知道在浮点数和整数之间进行转换时可能会出现错误 但是性能如何 请忽略准确性问题 一般来说 如果我对不同算术类型的操作数 即不同的浮点类型 例如 float and double 和浮点 整数类型组合 例如float and int 是否存
  • 这是一个有效的浮点数比较,它占了一定的小数位数吗?

    我正在编写一个扩展方法来使用一组小数点 有效数字 来比较两个浮点数 以确定它们是否相等而不是容差或百分比差异 浏览有关浮动比较的其他问题 我看到了复杂的实现 我是否过于简单化了或者这是否有效
  • 了解 C# 和 Java 中的 IEEE-754 64 位定点表示

    考虑以下 Java 代码 public class Program public static void main String args double number Double MAX VALUE String formattedNum
  • 为什么这个表达式会导致浮点错误?

    所以浮点运算是inexact http en wikipedia org wiki Floating point但这并不能完全解释这里发生的事情 46 pry main gt a 0 05 gt 0 05 47 pry main gt a
  • 单元测试(有时)会因为浮点不精确而失败

    我有课Vector代表 3 维空间中的一个点 这个向量有一个方法normalize self length 1 将矢量缩小 放大为length vec normalize length length 该方法的单元测试有时由于浮点数的不精确性
  • 为什么 GCC 不将 a*a*a*a*a*a 优化为 (a*a*a)*(a*a*a)?

    我正在对科学应用程序进行一些数值优化 我注意到的一件事是 GCC 会优化调用pow a 2 通过将其编译成a a 但是调用pow a 6 没有优化 实际会调用库函数pow 这大大降低了性能 相比之下 英特尔 C 编译器 http en wi
  • cout 可以以某种方式改变变量吗?

    所以我有一个看起来像这样的函数 float function float x SomeValue return x SomeOtherValue 在某些时候 这个函数会溢出并返回一个非常大的负值 为了尝试准确追踪发生这种情况的位置 我添加了
  • 如何将带小数点的字符串解析为双精度型?

    我想解析一个字符串 3 5 到一个双倍 然而 double Parse 3 5 产量 35 和 double Parse 3 5 System Globalization NumberStyles AllowDecimalPoint 抛出一
  • 测试由于浮点限制而导致的舍入误差

    我最近了解到浮点的主要限制之一 事实上 某些数字无法以二进制正确表示 因此可能给出的答案对于您的目的来说不够准确 知道round 2 675 2 and round 2 665 2 两者相等2 67我尝试编写一些代码来给出具有此属性的数字列
  • 二进制浮点加法算法

    我试图理解二进制级别的 IEEE 754 浮点加法 我遵循了一些在网上找到的示例算法 并且大量测试用例与经过验证的软件实现相匹配 我的算法目前只处理正数 但是 我没有得到与此测试用例的匹配 0000100011110011011001001
  • 在 Linux 上将 libquadmath 与 C++ 链接

    我有一个示例代码 include
  • 将字符串转换为双精度 - VB

    VB中有没有一种有效的方法来检查字符串是否可以转换为双精度型 我目前正在尝试将字符串转换为双精度型 然后查看它是否引发异常 但这似乎减慢了我的申请速度 Try if number then format it current CDbl x
  • C# 转换为小数

    如果有的话 有什么区别 decimal d decimal myDouble decimal d new decimal myDouble decimal d Convert ToDecimal myDouble 没有区别 如果你看一下源码

随机推荐

  • 在 Swift 3 中以编程方式使用 ScrollView

    我搜索了其他问题 似乎在 swift 3 中使用自动布局以编程方式创建滚动视图时仍然遇到一些问题 我能够让我的滚动视图显示如下图所示 但是当我滚动到底部时 我的其他标签却出现了问题不显示 滚动顶部 标签也不会消失 希望有人可以帮助查看我下面
  • 将类添加到表单字段 Django ModelForm

    我正在尝试使用 Django ModelForm 编写 Bootstrap 表单 我已阅读 Django 文档有关表单的 Django 文档 https docs djangoproject com en dev topics forms
  • Android Retrofit 2,用于编辑响应的 addInterceptor 和 addNetworkInterceptor 之间的差异

    我一直在尝试实现一个拦截器 OkHttp 3 2 和改造 2 用于在作为响应返回之前编辑 JSON 响应 我们请求数据的服务器根据成功或错误返回不同的数据 这使得映射对象变得困难 我试图通过将拦截器添加到 Retrofit 作为 Netwo
  • 去哪一个; Yii 或 Symfony

    好的 我是NOT询问哪一个更好 我知道 Yii 并不比 Symfony 好 Symfony 也不比 Yii 好 我想问的是我应该选择哪一个呢 我想提出几点 我有一个大型项目 格式非常好 编码也非常好 如果您看到我的代码 您会认为我制作了自己
  • Java Process无法通过Runtime.getRunTime().exec()获取InputStream

    try String str Process process Runtime getRuntime exec bash home abhishek workspace Pro run InputStream isout process ge
  • 动态加载程序集中的强类型 Razor 视图不会在运行时编译

    我在程序集中有一个 MVC3 区域动态加载与MEF 如果我使用具有强类型视图的 Webforms 视图引擎 一切都会正常工作 如果我将 Razor 视图引擎与dynamic模型 效果也很好 但如果我使用强类型 Razor 视图 视图编译在运
  • 在类上覆盖 dict()

    我正在尝试做一个dict 类似 Python 中的类 当你创建一个类时 你有某些方法告诉Python如何创建一个内置类 例如 覆盖 int 方法告诉 Python 如果用户使用则返回什么int 在类的一个实例上 同样适用于 float 您甚
  • redux 形式的多个复选框

    我想问一下 场景是这样的 我有多个复选框 但我的问题是每当我勾选一个复选框时 所有 4 个复选框都会被选中 还有为什么复选框的值只是 true 或 false 这是我的复选框 div div
  • 如何让 Visual Studio 自动获取传入提交

    因此 当在 MSVS 中使用 Git 时 您可以使用 Fetch 来查看正在等待您的传入提交 有没有办法将其设置为自动发生 或者我每次想到它时都被迫单击 获取 我有一个不同但接近的需求 我在一个大项目中使用了 git tf git tf f
  • 我需要释放 C 中 strerror() 的结果吗?

    据我了解 strerror errno 返回对应错误的字符串形式errno 那么 当我使用完函数后 是否需要释放函数的返回结果呢 你不仅不need to you must not 你唯一可以传递的东西free是指向您获得的内存的指针mall
  • ASP.NET Core 3.1 Azure AD 身份验证抛出 OptionsValidationException

    我正在尝试使用 Azure Active Directory 处理 Web 应用程序上的身份验证 然而 当我尝试用AuthorizeAttribute https learn microsoft com en us dotnet api m
  • 静态 D3 力导向图性能

    所以目前我正在尝试创建一个包含数千个节点和图中大约 30k 个链接的力导向图 正如您可能猜到的 模拟速度非常非常慢 我想做的是预先计算节点的所有位置并仅渲染静态 但交互式 图表 有没有办法使用 d3 js 计算力定向图而不渲染它 使其更快
  • Rails - 通过选择下拉菜单执行 ajax 调用

    我有一个视图 其中包含select标签 它不是表单的一部分 只是一个独立的下拉菜单 单击其中一个选项时 我想执行 ajax 调用 这是选择标签 这是一个基本的 jquery 我试图通过它来检测变化
  • 如何触发(window).focus页面加载?

    加载页面时 不会激活焦点 模糊状态 例如切换到另一个选项卡时blur显示 然后切换回页面focus激活 但在第一次加载页面时 没有任何状态被激活 为什么 这是预期的行为还是我搞砸了 function window focus functio
  • jupyterlab中初始化SparkContext时出错

    嗨 我正在尝试学习如何使用 pyspark 但是当我运行第一行时 import pyspark sc pyspark SparkContext local 我收到此错误 Py4JJavaError An error occurred whi
  • 如何在没有 SDK 或自定义应用程序 ID 的情况下创建 Facebook 分享按钮?

    我正在看Facebook 分享按钮的最新更新 https developers facebook com docs sharing reference share dialog如果不包含 Facebook javascript SDK 或者
  • 为什么pip找不到pysvn?

    我正在开发一个用 Python 2 编写的项目 并将其升级到 Python 3 到目前为止 我只是发现了一些很容易修复的小语法错误 我所做的就是在 Python 3 中创建一个新项目 确保其正常工作 并将旧项目中的代码块复制到新项目中 现在
  • 为什么 TypeScript 接口不支持索引签名,而类型别名却支持? [复制]

    这个问题在这里已经有答案了 我有一个带有字符串索引签名的类型 declare var result key string number 将接口分配给该类型失败 interface IData a number b number declar
  • 使用 ?attr/selectableItemBackground 作为背景时如何修改波纹颜色?

    我见过一些 SO 问题 他们给出了一些可能的方法来实现我想要的 例如 Use colorControlHighlightstyles xml 中的属性 这是我的 styles v21 xml 还有我的小部件
  • 两个不相等的浮点数相减是否可以得到0?

    在下面的例子中是否可以除以 0 或无穷大 public double calculation double a double b if a b return 0 else return 2 a b 当然 在正常情况下不会 但如果a and