为什么将 NaN 转换为 long 会产生有效结果?

2024-03-24

在下面的示例代码中,我除以零,当我使用调试器单步调试它时,(被除数/除数)会产生无穷大或 NaN(如果除数为零)。当我将此结果转换为 long 时,我会得到一个有效结果,通常类似于 -9223372036854775808。为什么这个演员阵容有效?为什么它不停止执行(例如抛出异常)而不是分配任意值?

double divisor = 0;
double dividend = 7;
long result = (long)(dividend / divisor);

为什么这个演员阵容有效?

如果在编译时已知转换是有效的might成功或always成功了。仅当转换不可能成功时,强制转换才是非法的。 (例如,将密封类型转换为它未实现的接口。)从 double 到 long 的转换可能会成功。因此演员阵容是有效的。

为什么它不停止执行(例如抛出异常)而不是分配任意值?

因为你没有要求例外!该规范非常清楚预期的行为是什么。参见第 6.2.1 节:

对于从 float 或 double 到整型的转换,处理取决于发生转换的溢出检查上下文:

在已检查的上下文中,转换按如下方式进行:

• 如果操作数的值为NaN 或无穷大,则抛出System.OverflowException。

[...]

在未经检查的上下文中,转换始终会成功,并按如下方式进行。

• 如果操作数的值为NaN 或无穷大,则转换结果是目标类型的未指定值。

您正在未经检查的上下文中执行代码;你要求没有例外,所以你也没有得到例外。如果您想要例外,请申请例外;使用已检查的上下文。

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

为什么将 NaN 转换为 long 会产生有效结果? 的相关文章

  • 如何知道并加载特定文件夹中的所有图像?

    我有一个应用程序 C Builder 6 0 需要知道特定文件夹中的图像总数 然后我必须加载它们 在 ImageList 或 ComboBoxEx 中 或任何其他控件中 我怎样才能做到这一点 我知道如何在控件中加载图像 或保存在 TList
  • 有没有比这更快的方法来查找目录和所有子目录中的所有文件?

    我正在编写一个程序 需要在目录及其所有子目录中搜索具有特定扩展名的文件 这将在本地驱动器和网络驱动器上使用 因此性能是一个问题 这是我现在使用的递归方法 private void GetFileList string fileSearchP
  • 浮点提升:stroustrup vs 编译器 - 谁是对的?

    在 Stroustrup 的新书 C 编程语言 第四版 第 10 5 1 节中 他说 在执行算术运算之前 整数提升用于从较短的整数类型创建整数 类似地 浮点提升是用于从浮点数创建双精度数 我用以下代码确认了第一个声明 include
  • Linq Where 本地计数器关闭在 VS watch 中的结果不同

    我尝试删除前 3 个元素array与 LinQWhere扩展功能 这是一个例子 var array new 1 2 3 4 5 6 7 8 9 var count 3 var deletedTest1 0 var test1 array W
  • 字节到二进制字符串 C# - 显示所有 8 位数字

    我想在文本框中显示一个字节 现在我正在使用 Convert ToString MyVeryOwnByte 2 但是 当字节开头有 0 时 这些 0 就会被删除 例子 MyVeryOwnByte 00001110 Texbox shows g
  • 使用 VSTO 更改 Outlook 设置

    我刚刚花了大约 4 个小时试图弄清楚如何以编程方式检索 设置 Microsoft Outlook 2010 的 Outlook 设置 我所说的 设置 是指文件 选项 邮件下的设置 我想做的是检索用户设置的设置列表 自动化我们每天需要在某些消
  • 控制台应用程序 .net Core 2.0 的配置

    在 net Core 1 中我们可以这样做 IConfiguration config new ConfigurationBuilder AddJsonFile appsettings json true true Build 这样就可以使
  • C中有const吗?

    这个问题可能很幼稚 但是 有没有constC 中的关键字 从哪个版本开始 之间有任何语义和 或句法差异吗const在 C 和 C 中 C 和 C 之间在语法上没有差异const关键字 除了一个相当晦涩的关键字 在 C 中 自 C99 起 您
  • 成员初始值设定项列表中的求值顺序是什么?

    我有一个带有一些参数的构造函数 我假设它们是按照列出的顺序初始化的 但在一种情况下 它们似乎是按相反的顺序初始化的 导致中止 当我反转参数时 程序停止中止 下面是我正在使用的语法的示例 a 之前需要初始化b 在这种情况下 你能保证这个初始化
  • 防止复制构造和返回值引用的分配

    如果我有一个函数返回对类实例的引用 但我无法控制其源 比如说list
  • 捕获当前正在播放的声音

    是否可以捕获计算机上当前播放的声音 如果能够将其保存为 mp3 就好了 但我认为这样做会存在一些法律问题 所以 wav 也可以 我环顾四周 有人建议使用虚拟音频线之类的东西 在 C 中捕获声音输出 https stackoverflow c
  • CMake - 将预构建库链接到 C# 项目

    我正在使用 CMake 构建 C 库 该库依赖于已构建的库 dll 我似乎无法让图书馆链接到我的图书馆 我尝试过使用target link libraries mylib external lib 我也尝试过暴力破解 reference e
  • C#:使用 System.Text 和 System.Text.RegularExpressions 之间的区别

    在 ASP NET C 应用程序中 我注意到为了使用 Regex 和 StringBuilder 我必须将两者都放在 using System Text using System Text RegularExpressions 从简单的角度
  • for 循环 - 没有效果的语句

    由于某种原因 我收到错误 statement with no effect关于这个声明 for j idx j lt iter j increment printf from loop idx i int idx punc ctxt j 你
  • 在生产者-消费者情况下使用条件变量

    我正在尝试了解条件变量以及如何在生产者 消费者情况下使用它 我有一个队列 其中一个线程将数字推入队列 而另一个线程从队列中弹出数字 当生产线程放置一些数据时 我想使用条件变量向消费线程发出信号 问题是有时 或大多数时候 它只将最多两个项目推
  • 抽象类和接口之间的区别[重复]

    这个问题在这里已经有答案了 可能的重复 接口与基类 https stackoverflow com questions 56867 interface vs base class 我不明白抽象类和接口之间的区别 我什么时候需要使用哪种字体
  • C++ Primer 5th Edition 错误 bool 值没有指定最小大小?

    bool 的最小大小不应该是 1 个字节吗 这有点学术性的东西 尽管它们会转换为数字 并且 与其他所有事物一样 它们最终将基本上由计算机内存中的数字表示 但布尔值不是数字 你的bool可以取值true 或值false 即使您确实需要至少 1
  • 使用 Linq 进行异步Where过滤

    我有一个List通过填充的元素async调用 WebService 没问题 我需要过滤该列表以便在应用程序视图上显示某些内容 我试过这个 List
  • 在 MVVM 中,可以在视图后面的代码中访问 ViewModel 吗?

    在 MVVM 模式中 是否可以接受甚至可以访问视图代码后面的 ViewModel 属性 我有一个可观察的集合 它填充在 ViewModel 中 我需要在视图中使用它来绑定到带有链接列表的无限滚动条 IE private LinkedList
  • 多个同名内存数据库

    关系到这个答案 https stackoverflow com a 48446491 596758 我试图通过设置让多个上下文工作UseInMemoryDatabase以同名 下面的测试失败 第二个上下文为空 我还需要做什么才能在内存数据库

随机推荐

  • 将“正常”std::string 转换为 utf-8

    让我们看看我是否可以在没有太多事实错误的情况下解释这一点 我正在编写一个字符串类 我希望它使用utf 8 存储在 std string 中 因为它是内部存储 我希望它能够同时 正常 std string and std wstring作为输
  • 如何仅删除一些方面标签?

    Using facet wrap 是否可以只删除一些方面标签 在下面的示例中 我希望物种标签仅出现在每行的第一列中 我知道我可以使用labeller功能 但不包括如何更改单个标签 data iris library tidyr librar
  • 在 firebase 中看不到请求标头的值?

    我执行以下操作 var headers new Headers headers append bunny test headers append rabbit jump fetch blahurl com someservice heade
  • 为什么 svcutil.exe 的 /reference 选项不起作用?

    我正在尝试使用 svcutil exe 从一组 wsdl 文件中仅生成服务契约 接口 当我这样做时 从 http 托管的 wsdl 它会获取包含的模式并为它们生成所有代码 Great 我会做什么REALLY然而 我喜欢做的是使用一组已经使用
  • SVG 线条动画不起作用

    I am trying to create an effect where smoke comes out of a vessel Like this example where smoke comes out of a coffee cu
  • 删除记录前检查规则违规情况

    我想为我的 SQL Server 2005 数据库中的许多实体实施 软删除 方案 我的意思是 如果没有违反引用完整性规则 我想从表中删除一行 否则我将在记录上设置一个标志以表示它已被删除 我希望强制执行此 软删除 模式的表必须将 无操作 应
  • 如何将两个小部件放置在同一行中?

    我有国家 地区代码 DropdownMenu 和电话 TextFormField 如何将它们放在同一级别 我尝试过对齐小部件 Row children
  • 更改 Android numberpicker 分隔线颜色

    我想将上面显示的数字选择器的分隔线颜色 蓝色 更改为透明 我尝试了很多事情 比如 number picker setDividerDrawable getResources getDrawable R color transparent n
  • “可选类型‘字符串’的值?”没有打开;您是想使用“!”吗?或者 '?' ?”

    我研究 iOS 或 Swift 的时间并不长 通过最新的 Xcode 更新之一 我在计算机上制作的许多应用程序现在似乎都在使用过时的语法 Xcode 告诉我们将其转换为新语法 但通常这并不能解决任何问题 而且我遇到了一个新问题 这是我在语法
  • CloudKit推送通知,应用程序在后台运行

    iOS8 2 app在后台运行时 不会收到任何推送通知 而如果它在前台运行 它可以很好地接收推送通知 知道发生了什么事吗 运行于CloudKit Development模式 订阅用于添加 编辑和删除 并使用以下内容didReceiveRem
  • DynamoDB ProjectionExpression 排除属性(除一个字段外的所有字段)

    我有一个要求 我的 dynamodb 表具有许多属性 并且我需要投影表达式中的所有属性 除了我不需要响应的一两列 我正在扫描桌子 有没有一种方法可以在 ProjectionExpression 中定义它 除了这一列 我见过一些示例 其中 P
  • 左外连接不返回主表中的所有记录

    当我执行左外连接时 我希望在添加连接表之前获取查询将返回的所有记录 但它仅返回与连接表匹配的记录 即 表中不存在 092387 的记录 文档 所以我只想为该记录的 文件名 字段返回 null 我做错了什么 mysql gt select d
  • Java Signature.verify 导致 SignatureException:签名编码错误 由 IOException 引起:序列标记错误

    首先 这不是一个重复的问题 因为大多数人在从缺少 BEGIN RSA CERTIFICATE 行的证书创建公钥时报告此异常 我想做的要点是 1 使用 SHA1withRSA 算法 RSA 密钥为 1024 位 在 JCOP 智能卡上签署 5
  • 使用 JavaScript 设置 HTML 页面垂直位置

    我有一个可以上下滚动的 HTML 页面 不是很多 但确实可以滚动 执行一些 JavaScript 后如何设置页面中的滚动位置 我正在使用 jQuery 在页面底部注入一些额外的 HTML 并且我想在添加新内容后以编程方式滚动到新内容的位置
  • 在 ASP.NET Core 上实现“Fire and Forget”方法的安全方法

    我正在尝试实现一个简单的日志记录库 该库将在多个项目中使用 库的工作是将 HTTP 请求发送到 ElasticSearch 这个库的要点是它不能等待响应 另外 我不关心任何错误 异常 它必须将请求发送到 ElasticSearch 并立即返
  • 我可以使用 CSS 在同一个元素上设置两个背景图像吗?

    HTML 代码示例 table tr td class a b CSS 文件示例 a background image url a png b background image url b png 似乎 b 部分被忽略了 有没有办法将两个图
  • 使用共享包中的 GWT NumberFormat 类

    在我的 GWT 项目中 我的服务返回一个类型的对象Shield我已经定义了 作为Shield客户端和服务器都使用类型 我已将类定义放在共享包中 The Shield类使用com google gwt i18n client NumberFo
  • jquery CSS calc() 函数

    我看到了这个页面CSS链接 http www w3 org TR css3 values calcltexpressiongt我情不自禁地喜欢计算不同单位的结果的想法 不过我尝试过这个 selector css width calc 100
  • Excel::Writer::XLSX 在公式中添加了意外的 @

    我正在使用以下命令将公式写入 xlsx 文件Excel Writer XLSX use Excel Writer XLSX my workbook Excel Writer XLSX gt new test xlsx my workshee
  • 为什么将 NaN 转换为 long 会产生有效结果?

    在下面的示例代码中 我除以零 当我使用调试器单步调试它时 被除数 除数 会产生无穷大或 NaN 如果除数为零 当我将此结果转换为 long 时 我会得到一个有效结果 通常类似于 9223372036854775808 为什么这个演员阵容有效