scala:为什么 1/0 是算术异常但 1.0/0.0 = Double.Infinity

2024-01-19

在 Scala 中,整数算术除以零会抛出 a,这似乎不一致java.lang.ArithmeticException: / by zero,但是浮点运算(1.0/0.0) 返回Double.Infinity.

我知道从类型的角度来看,同时拥有 Double.Infinity 和 Integer.Infinity 可能会很棘手,但我认为使用 scala 强大的类型系统,他们可以找到其他方法来解决该方面的问题。

我还缺少其他什么东西可以更好地解释这两种不同的行为吗?


这是硬件限制,而不是软件限制,原因很简单:IEEE 754 浮点运算显式支持+Inf and -Inf,即存在与这两个想法相对应的位表示,因此它们作为以下结果是有意义的1.0/0.0.

在普通处理器中实现的整数算术没有无穷大的内部表示,因此必须抛出错误。

您可以在软件中实现支持无穷大的整数类型,但它会更慢,因为除法运算不会直接对应于处理器 的div操作说明。在我看来,这是不明智的:整数除零错误是几乎总是由于(a)算法的错误实现或(b)未能正确验证用户输入,这两个问题都是必须在编译代码之前解决的基本问题,而不是在运行时通过异常解决!另一方面,在 FP 算术中,当您没有(并且确实不能)期望它时,您可能很容易遇到被零除的情况:1e-308/1e+308有一个正确的值,但它不能表示为double即使两个操作数都是。

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

scala:为什么 1/0 是算术异常但 1.0/0.0 = Double.Infinity 的相关文章

  • 如何将 .cer 证书导入 java 密钥库?

    在开发 Java Web 服务客户端期间 我遇到了一个问题 Web 服务的身份验证使用客户端证书 用户名和密码 我从网络服务背后的公司收到的客户端证书位于 cer格式 当我使用文本编辑器检查该文件时 它具有以下内容 BEGIN CERTIF
  • 不同的 JDK 更新会产生不同的 Java 字节码吗?

    假设场景 我有一个项目 其源合规性级别指定为 1 5 现在 我使用两种不同的 JDK 编译此项目 首先使用 JDK 6 Update 7 然后使用 JDK 6 Update 20 这两个不同的 JDK 是否会生成不同的 Java 字节代码
  • 使用 java 的 RAR 档案 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • JPA:如何将字符串持久保存到数据库字段中,输入 MYSQL Text

    需求是用户可以写文章 所以我选择typeText为了contentmysql数据库内的字段 我怎样才能转换Java String into MySQL Text 干得好Jim Tough Entity public class Articl
  • 获取TextView的高度

    我有一些文字将被放入TextView 我这样做是使用setText 现在我需要找到文本在文本中占据的行数或高度TextView 我尝试使用getHeight 但它总是返回 0 无论如何 有没有办法获得文本中存在的文本的高度TextView
  • 确定代码是否在 App Engine 运行时 (Java) 上运行

    如何确定某些代码 Serv let 或简单的类 是否正在 Google App Engine 运行时 Java 上运行 以便决定是否使用 App Engine 的特定库 是否有一些可靠的运行时环境 ID 您可以检查com google ap
  • java.lang.IllegalArgumentException:addChild:子名称“/”不唯一

    java lang IllegalArgumentException addChild 子名称 不唯一 通过在 tomcat webapps 文件夹中启用和禁用 saml 单点登录来替换现有 war 文件时遇到此问题 我正在使用 apach
  • activemq 的优先级

    我们目前正在使用 JMS 和 activemq 5 5 1 开发一个应用程序 我们想为某些消息定义更高的优先级 这将使它们首先被消耗 设置生产者和消费者后 通过spring 3 1 JMSTemplate 优先级并不能完全发挥作用 事实上
  • Java中无参数的for循环

    我在看别人的代码 发现了这段代码 for 我不是 Java 专家 这行代码在做什么 起初 我认为这会创建一个无限循环 但在该程序员使用的同一个类中 while true 其中 如果我错了 请纠正我 是一个无限循环 这两个相同吗 为什么有人会
  • 如何告诉 cxf 将包装类型保留在方法中?

    在我的 WSDL 中我有一个操作
  • wsdl 没有服务元素

    我必须使用 WCF Web 服务并获得 WSDL 外部的 因此无法控制 WSDL 在 WSDL 定义中 我没有找到包含服务 端口和地址元素的服务元素 WSDL 中不存在这种情况正常吗 这对于 WCF WSDL 来说很常见吗 我正在尝试使用轴
  • java Runtime.getRunTime().exec 和通配符?

    我正在尝试使用删除垃圾文件 Process p Runtime getRuntime exec 只要我不使用通配符 它 就可以正常工作 即 Process p Runtime getRuntime exec bin rm f specifi
  • Java .split("|") 不工作

    我刚刚遇到了一个问题分割法 http docs oracle com javase 6 docs api java lang String html split 28java lang String 29for 字符串不适用于字符 作为一个
  • 将变量从 jenkins 传递到 testng.xml

    我想根据从詹金斯传递的变量运行测试用例 例如 选择您要运行的测试用例 测试用例一 测试用例二 在 pom xml maven 中
  • Java 相当于 Python 的 urllib.urlencode(基于 HashMap 的 UrlEncode)

    From https stackoverflow com questions 2018026 should i use urllib or urllib2 2018103 2018103 Java 中 Python 的 urllib url
  • spring data jpa 过滤 @OneToMany 中的子项

    我有一个员工测试实体是父实体并且FunGroup信息子实体 这两个实体都是通过employeeId映射 我需要一种方法来过滤掉与搜索条件匹配的子实体 以便结果仅包含父实体和子实体 满足要求 员工测试类 Entity name Employe
  • 如何隐藏或删除 Android HoneyComb 中的状态栏?

    如何隐藏或删除 Android HoneyComb 中的状态栏 每次运行应用程序时 我都会发现某些内容必须被状态栏覆盖 我尝试改变AndroidManifest xml 但没有任何改变 你不知道 它被认为是永久的屏幕装饰 就像电容式主页 菜
  • 将带有时区的 Joda-Time `DateTime` 转换为没有时区的 DateTime?

    Given a DateTime http www joda org joda time apidocs org joda time DateTime html例如2015 07 09T05 10 00 02 00 using 乔达时间 h
  • 线程“main”中出现异常 java.lang.UnsatisfiedLinkError: ... \jzmq.dll: 找不到依赖库

    我有一个使用 ZMQ 的 java 应用程序 我已经能够在我的 Win7 PC 上运行它 我将 jzmq dll 放在 jar 可执行文件所在的同一文件夹中 然后通过命令 java jar myapp jar 运行它 我的下一步是将其移至服
  • 使用 Hibernate 防止无限循环数据检索

    我想知道 想象一个场景 例如 POJO public class User private String userName private String name private String surname private List

随机推荐

  • UICollectionView 中的多个部分

    我正在使用集合视图为我的医院构建一个 iOS 应用程序 但是 根据目的 我需要在专科诊所使用多个部分 如果只是 1 部分 我已经完成了代码 当我尝试将其分成 2 个部分时 它总是返回一个 nil 值 请检查我下面的代码 public fun
  • 什么是表分区?

    什么情况下我们应该使用表分区 一个例子可能会有所帮助 我们每天从 124 家杂货店收集数据 每天的数据都与其他日期完全不同 我们按日期对数据进行分区 这使我们能够更快地 因为oracle可以使用分区索引并快速消除所有不相关的天数 这还使备份
  • 如果嵌入需要正确的大括号嵌套,如何在 Ace 编辑器中进行嵌入突出显示?

    考虑以下 Razor 代码 div Model GetSomething div 显然 只有考虑到所有括号 才能正确识别 Razor 块 如果我进行朴素嵌入 基于 PHP 的做法 var RazorLangHighlightRules fu
  • 在 GGplot2 中使用 Geom_Bar

    So I m trying to use geom bar in ggplot2 and all of the cases that I see of people demonstrating it online are of compar
  • C# - C 互操作性

    问答位于链接文本 https stackoverflow com questions 3726829 writing a dll in c c for net interoperability非常接近我正在寻找的内容 但我刚刚开始使用 C
  • 电子邮件中的图像:链接还是嵌入?

    我注意到我收到的几乎所有电子邮件都没有嵌入图像 而是从 http 链接它们 当然它们会被默认阻止 我正在为我的服务发送 HTML 电子邮件 并且可以轻松嵌入图像以创建更好的视觉体验 有什么特别的理由不这样做吗 为什么其他人都使用链接而不是嵌
  • `##` 和 `hashCode` 有什么区别?

    方法之间有什么区别 and hashCode 无论哪个类别或哪个类别 它们似乎都输出相同的值hashCode我使用的超载 谷歌也没有帮助 因为它找不到符号 的 子类 AnyVal不守规矩properly从哈希的角度来看 scala gt 1
  • UNIX下如何查看进程是否挂起

    我正在尝试恢复所有已暂停的进程 但我不知道如何检查进程是否已暂停 我尝试过 但它没有表明该进程是暂停还是运行 你可以使用 Ipor 的方式 proc
  • 使用滚动条动态显示面板的布局

    在java中 我一直在尝试创建一个可以接受其他带有滚动条的面板的面板 我尝试使用网格布局 这工作得很好 除了如果我只添加几个面板 它会增长这些面板以适应父面板的大小 我尝试使用 flowlayout 但这使得面板水平流动 因为有滚动条 我该
  • 你能给我指一个大型 Python 开源项目吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想看看用 Python 完成的大型 gt 40 名开发人员 项目是什么样子的 代码是什么样子的 他们使
  • 有没有办法优化std算法?

    搜索有关标准算法性能的任何信息 我发现堆栈溢出问题 https stackoverflow com questions 25622109 why is c stdmax element so slow关于之间的性能差异std max ele
  • C# 垃圾收集

    假设我们有 public void foo someRefType test new someRefType test new someRefType 垃圾收集器对第一个堆对象做什么 在新分配之前是否立即进行垃圾收集 一般机制是什么 垃圾收
  • 如何在 Android Wear 上录制音频

    有什么方法可以在 Android Wear 上录制音频吗 我使用 AudioRecord API 它使应用程序崩溃 难道我做错了什么 short audioData new short minBufferSize AudioRecord a
  • .NetCoreApp 和 .NetStandard.Library 有什么区别?

    Net Core 1 0 几天前发布了 我已经开始使用它了 我创建了一个简单的解决方案 其中一个项目 类库 gt NetStandard Library 和第二个项目是控制台应用程序 NetCoreApp 关键是 控制台应用程序引用了库 但
  • 如何使 UITextField 只有一个文本/数字并使用“下一步/完成”按钮浏览多个“UITextField”

    我必须处理多个导航UITextField使用 下一步 完成按钮 现在我必须在每个按钮中只允许一个文本 数字UITextField我们怎样才能做到这一点UITextField如下图所示 我最近使用了以下代码 也能够实现 但遇到问题 当我第一次
  • 构建失败 jenkins iOS 没有错误

    我让 jenkins 工作来编译 iOS 应用程序 但我的构建失败了 没有错误 CodeSign Users jenkins Library Developer Xcode DerivedData XXXXX com aevqskpxrxf
  • 我可以在 Razor 中使用 @helper 语法返回字符串吗?

    我有一个 RazorHelpers cshtml 文件app code看起来像 using Molecular AdidasCoach Library GlobalConstants helper Translate string key
  • 将工具提示与 Windows 应用程序中的 CHM 帮助集成

    我们正在尝试重新设计 Windows 桌面应用程序的文档流程 我们的两个要求是 以 CHM 格式提供 参考 帮助 提供有关各个控件的工具提示帮助 目前我们的工具提示被硬编码到 Delphi C Builder 表单中 但我理想情况下希望避免
  • libVLC 函数 media_player_new() 抛出分段错误

    media player new 抛出分段错误 import vlc ins vlc Instance player ins media player new 这是它崩溃的地方 Thread 0 Crashed Dispatch queue
  • scala:为什么 1/0 是算术异常但 1.0/0.0 = Double.Infinity

    在 Scala 中 整数算术除以零会抛出 a 这似乎不一致java lang ArithmeticException by zero 但是浮点运算 1 0 0 0 返回Double Infinity 我知道从类型的角度来看 同时拥有 Dou