溢出与 Inf

2024-03-01

当我输入一个大于 max 的数字时double https://en.wikipedia.org/wiki/Double-precision_floating-point_format在 Matlab 中大约是1.79769e+308, 例如10^309,它返回Inf。出于教育目的,我想获得溢出异常,例如C返回溢出错误消息的编译器,而不是Inf。我的问题是:

  1. Is Inf溢出异常?

  2. 如果是,为什么C编译器不返回Inf?

  3. 如果没有,Matlab 中会出现溢出异常吗?

  4. 有什么区别吗Inf和溢出异常吗?

我也不想检查Inf在 Matlab 中,然后抛出异常error()功能。


1) C/C++ 中的浮点

操作于浮点数字 http://www.johndcook.com/IEEE_exceptions_in_cpp.html可以产生非数值的结果。例子:

  • 运算的结果是一个复数(认为sqrt(-1.0))
  • 操作的结果是未定义的(认为1.0 / 0.0)
  • 运算结果太大而无法表示
  • 执行操作时其中一个操作数已经是 NaN 或 Inf

IEEE754的理念是为了不被困住 http://www.jdl.co.uk/briefings/divByZeroInCpp.html such 例外情况 https://en.wikipedia.org/wiki/IEEE_floating_point#Exception_handling默认情况下,但要产生特殊值(Inf and NaN),并允许计算正常继续而不中断程序。由用户来测试此类结果并单独处理它们(例如isinf and isnanMATLAB 中的函数)。

存在两种类型的 NaN https://stackoverflow.com/questions/18118408/what-is-difference-between-quiet-nan-and-signaling-nan值:NaN(安静 NaN)和 sNaN(信号 NaN)。通常,当运算无法成功完成时,所有浮点数的算术运算都会产生安静类型(而不是信号类型)。

有(依赖于平台的)功能control https://stackoverflow.com/questions/2219244/dealing-with-floating-point-exceptions浮点环境和catch https://stackoverflow.com/questions/2941611/can-i-make-gcc-tell-me-when-a-calculation-results-in-nan-or-inf-at-runtimeFP 例外:

  • Win32 API 有_control87() http://msdn.microsoft.com/en-us/library/e9b52ceh.aspx控制 FPU 标志。
  • 典型的 POSIX/Linux 系统处理FP异常 http://www.gnu.org/savannah-checkouts/gnu/libc/manual/html_node/Control-Functions.html通过捕获 SIGFPE 信号(参见feenableexcept http://linux.die.net/man/3/feenableexcept).
  • SunOS/Solaris 也有其自己的功能(参见第 4 章)数值计算指南 http://docs.oracle.com/cd/E19957-01/806-3568/由 Sun/Oracle 提供)
  • C99/C++11引入了fenv http://en.cppreference.com/w/cpp/numeric/fenv带有控制浮点异常标志的函数的标头。

例如,看看Python如何实现不同平台的FP异常控制模块:https://hg.python.org/cpython/file/tip/Modules/fpectlmodule.c https://hg.python.org/cpython/file/tip/Modules/fpectlmodule.c

2) C/C++ 中的整数

这显然与浮点数完全不同,因为整数类型不能表示 Inf 或 NaN:

  • 无符号整数使用模运算 https://en.wikipedia.org/wiki/Modular_arithmetic(因此,如果结果超过最大整数,则值会环绕)。这意味着无符号算术运算的结果始终是“数学定义的”并且永远不会溢出。将此与 MATLAB 进行比较,其中使用饱和算术 https://en.wikipedia.org/wiki/Saturation_arithmetic对于整数 (uint8(200) + uint8(200)uint8(255)).
  • 另一方面有符号整数溢出是未定义的行为 https://en.wikipedia.org/wiki/Undefined_behavior.
  • integer https://stackoverflow.com/questions/3105591/how-to-catch-the-integer-division-by-zero-exception-in-c-language division https://stackoverflow.com/questions/12617408/a-few-things-about-division-by-zero-in-c by zero https://stackoverflow.com/questions/4747934/c-catch-a-divide-by-zero-error是未定义的行为。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

溢出与 Inf 的相关文章

  • 格式说明符%02x

    我有一个简单的程序 include
  • 静态构造函数和 BeforeFieldInit?

    如果类型没有静态构造函数 则将执行字段初始值设定项 就在使用该类型之前 或者在某个时间点突发奇想 运行时 为什么这段代码 void Main start Dump Test EchoAndReturn Hello end Dump clas
  • 使用 ADAL v3 使用 ClientID 对 Dynamics 365 进行身份验证

    我正在尝试对我们的在线 Dynamics CRM 进行身份验证以使用可用的 API 我能找到的唯一关于执行此操作的官方文档是 https learn microsoft com en us dynamics365 customer enga
  • C#.Net 邮件将进入垃圾邮件文件夹

    我正在从 ASP net Web 应用程序发送电子邮件 邮件发送成功 没有失败 但大多数都进入了垃圾邮件文件夹 请帮助我克服垃圾邮件过滤器 我的发送邮件代码 public void SendMail string FromAddress s
  • 捕获 .aspx 和 .ascx 页面中的异常

    问题说明了一切 请看以下示例代码 ul li li ul
  • 如何使用 openSSL 函数验证 PEM 证书的密钥长度

    如何验证以这种方式生成的 PEM 证书的密钥长度 openssl genrsa des3 out server key 1024 openssl req new key server key out server csr cp server
  • 为什么 C 程序使用 Scanf 给出奇怪的输出?

    我目前正在学习 C 编程 并且遇到了这个奇怪的输出 Program will try functionalities of the scanf function include
  • 无法继承形状

    为什么我不能使用继承 a 的类Shapes class http msdn microsoft com en us library ms604615 28v vs 90 29 我需要延长Rectangle具有一些方法的类 但我想以与使用相同
  • 在 Mono 中反序列化 JSON 数据

    使用 Monodroid 时 是否有一种简单的方法可以将简单的 JSON 字符串反序列化为 NET 对象 System Json 只提供序列化 不提供反序列化 我尝试过的各种第三方库都会导致 Mono Monodroid 出现问题 谢谢 f
  • 使用 C# 和 ASP.NET 在电子邮件附件中发送 SQL 报告

    我正在尝试使用 ASP NET 和 C 从 sql reportserver 2008 作为电子邮件附件发送报告 到目前为止我学会了如何获取 PDF 格式的报告 http weblogs asp net srkirkland archive
  • 如何向 Mono.ZeroConf 注册服务?

    我正在尝试测试 ZeroConf 示例http www mono project com Mono Zeroconf http www mono project com Mono Zeroconf 我正在运行 OpenSuse 11 和 M
  • MVC 5 中具有 ASP.NET Identity 的 Autofac 不会验证 OWIN 管道中的安全标记

    我在 MVC 5 中设置了 AutoFac 来与 ASP NET Identity 一起使用 表面上一切似乎都工作正常 即用户可以创建帐户并登录 但后来我发现 当安全标记更改时 用户不会注销 通过在 AspNetUsers 表中进行暴力破解
  • 让网络摄像头在 OpenCV 中工作

    我正在尝试让我的网络摄像头在 Windows 7 64 位中的 OpenCV 版本 2 2 中捕获视频 但是 我遇到了一些困难 OpenCV 附带的示例二进制文件都无法检测到我的网络摄像头 最近我发现这篇文章表明答案在于重新编译一个文件 o
  • 如何从 Boost.PropertyTree 复制子树

    我有一些boost property tree ptree 我需要树来删除一些具有特定标签名称的元素 例如 xml 表示源ptree如下
  • MySQL 连接器 C++ 64 位在 Visual Studio 2012 中从源代码构建

    我正在尝试建立mySQL 连接器 C 从源头在视觉工作室2012为了64 bit建筑学 我知道这取决于一些boost头文件和C 连接器 跑步CMake生成一个项目文件 但该项目文件无法编译 因为有一大堆非常令人困惑的错误 这些错误可能与包含
  • Xamarin Forms Binding - 访问父属性

    我无法访问页面的 ViewModel 属性以便将其绑定到 IsVisible 属性 如果我不设置 BindingContext 我只能绑定它 有没有办法可以在设置 BindingContext 的同时访问页面的 viewmodel root
  • C++ 指针引用混淆

    struct leaf int data leaf l leaf r struct leaf p void tree findparent int n int found leaf parent 这是 BST 的一段代码 我想问一下 为什么
  • 如何在C#中控制datagridview光标移动

    我希望 datagridview 光标向右移动到下一列 而不是在向单元格输入数据后移动到下一行 我试图通过 dataGridView1 KeyDown 事件捕获键来控制光标 但这并不能阻止光标在将数据输入到单元格后移动到下一行 提前感谢你的
  • 如何编写一个接受 int 或 float 的 C 函数?

    我想用 C 语言创建一个扩展 Python 的函数 该函数可以接受 float 或 int 类型的输入 所以基本上 我想要f 5 and f 5 5 成为可接受的输入 我认为我不能使用if PyArg ParseTuple args i v
  • 如何为有时异步的操作创建和实现接口

    假设我有数百个类 它们使用 计算 方法实现公共接口 一些类将执行异步 例如读取文件 而实现相同接口的其他类将执行同步代码 例如将两个数字相加 为了维护和性能 对此进行编码的好方法是什么 到目前为止我读到的帖子总是建议将异步 等待方法冒泡给调

随机推荐

  • 为什么 Fn 派生自 FnMut(FnMut 派生自 FnOnce)?

    如果您查看Rust 官方文档 https doc rust lang org std ops trait Fn html 你看到这个特质Fn源自FnMut 或者 实施Fn 你必须实施FnMut 在那之后FnOnce since FnMut也
  • iOS 音频单元会切断高于某个频率的声音

    我在接收声音 UDP WiFi 时遇到一些问题 我想尽可能清除它 所以一开始我想切断高于某个频率的声音 显然 我从套接字获取了原始数据 然后将其复制到输出缓冲区 我确信应该在那里进行精确的切断 你能建议我吗 我当前的回调代码 static
  • java中的kadane算法

    我在 java 中有以下 Kadane 算法的实现 基本上是找到连续子数组的最大和 String numbers string split int max so far 0 int max ending here 0 for int i 0
  • selenium 是否可以使用 xpath 通过“for”属性找到标签元素?

    selenium 是否可以使用 xpath 通过 for 属性找到标签元素 我正在测试一个连续有 7 个是或否问题的网站 CSS 的完成方式是单击标签而不是输入单选按钮 通常我只是通过文本内容查找元素 但每个问题都有一个 是 和 否 我认为
  • Cassandra - 从集群中删除节点

    我有一个包含三个节点的集群 我需要删除一个节点 在实际删除之前 如何确保要删除的节点中的数据将复制到其他两个节点 这是使用快照完成的吗 我应该如何进行 来自doc http cassandra apache org doc latest o
  • 带有刷新令牌的 JSON Web 令牌身份验证逻辑

    Angular 4 应用程序在浏览器 网站后端 中运行 显示特定用户拥有的服务器数据 服务器 PHP MySQL Zend Framework 3 Doctrine ORM Naming access token 生命周期短 1 分钟 允许
  • 如何在Excel中设置默认的特殊粘贴以仅粘贴值[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我的 Excel 中的一个单元格用作用户输入框 如果用户在此单元格中粘贴某些内容 我只想粘贴值而不是格式 有没有办法将粘贴选项的默认值设置
  • Laravel 5.2 模型 $fillable 被忽略?

    我有一个简单的模型IsolatedQuery其中包括一个name and query场地 我已经在中定义了这两个字段 fillable模型的属性 isolatedQueryController store 看起来像这样 public fun
  • 如何在自定义 python-sphinx 指令/扩展中使用现有指令?

    我想创建一个自定义的Directive使用现有指令 code block在这个例子中 在它的实现中 reStructuredText 中的手动等效项是 mydirective py code block py print Hello wor
  • Powershell 中非常大的 XML 文件

    对于非常大的文本文件 我们可以选择使用 StreamReader 和 StreamWriter 然后允许逐行查找 替换 但是 我有一个 XML 文件 需要在其中进行查找 替换并进行更多控制 例如查找 替换特定节点中的值 该节点是具有特定属性
  • Git - 如何自动将目录中的更改推送到另一个分支

    完成问题重写 所以我以为我正在非常简单和直接地解释这个问题 但似乎我过于简单化了 所以这里是所有额外的细节 希望这可以帮助每个人看到这也不是重复的 我有一个存储库 项目 我想在其中自动化将提交从一个分支中的一个目录推送到另一个分支的过程 我
  • 使用“:”(冒号)按属性选择元素

    在我的项目中 有一个库生成元素的情况 我需要从那里选择特定的元素 它恰好包含带有 的属性 换句话说 我最终尝试选择使用 document querySelectorAll xml space 但是 在 Chrome 中测试时 它不起作用 也
  • 无法在 Xcode 10 中查找屏幕比例和意外的物理屏幕方向

    我最近将 Xcode 更新到版本 10 现在我的控制台显示 MyApp 1618 133310 AXMediaCommon Unable to look up screen scale MyApp 1618 133310 AXMediaCo
  • 点击 pageControl 滚动到另一个视图(点击点)

    我已经设置了具有 2 个视图的 PageViewControll 我可以在视图之间移动 并且 pageControl 点 对应于正确的页面 但是点击点还不能滚动到正确的视图 我在这里找到了一些关于如何创建该函数的答案 但无法成功实现以使其工
  • 带有自定义操作的 installshield

    我正在使用 installshield 2012 prime 创建一个基本的 msi 项目 我有两个问题 1 MSI 在创建要安装的应用程序的文件夹和文件后需要运行自定义 exe 只需在安装应用程序时执行一次此操作 2 MSI 还需要告诉正
  • iOS MobileVLCKit 存档问题

    在尝试归档我的项目时 我得到了这个error ld bitcode bundle could not be generated because Users MobileVLCKit MobileVLCKit framework Mobile
  • 如何将 Apigility 与现有 ZF2 应用程序结合使用?

    我有一个带有一些模块的 ZF2 应用程序 我希望允许在我的应用程序中使用具有 Apigility 的现有模块 我尝试使用 Composer 安装这些模块 require php gt 5 3 3 phpoffice phpexcel mon
  • 为映射和/或嵌套对象自定义 Spring @RequestParam 反序列化

    RestController class MyController RequestMapping public void test Container container Spring 默认使用 Dot Notation 来反序列化嵌套的
  • 为什么 Google+ 登录完成登录时出错?

    我最近一直在处理 Android 上的 Google 登录问题 有一件事一直困扰着我 在他们所有官方认可的示例中 没有一个方法专门显示登录过程 每次尝试让某人登录时调用的方法称为resolveSignInError 如下所示 private
  • 溢出与 Inf

    当我输入一个大于 max 的数字时double https en wikipedia org wiki Double precision floating point format在 Matlab 中大约是1 79769e 308 例如10