问题标签 [floating-point]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 如何使用 std::signaling_nan?
在查看了关于 SO(在 C++ 中使用 NaN)的另一个问题后,我开始好奇std::numeric_limits<double>::signaling_NaN()
。
我无法让signaling_NaN 引发异常。我想也许通过发出信号它真的意味着一个信号,所以我尝试捕捉 SIGFPE 但不......
这是我的代码:
numeric_limits<double>::has_signaling_NaN
评估为真,所以它在我的系统上实现。
有任何想法吗?
我正在使用 ms visual studio .net 2003 的 C++ 编译器。我回家后想在另一个上测试它。
谢谢!
.net - 使用 == 运算符比较两个舍入浮点数是否正确?
还是有可能操作会失败?
谢谢。
我选择了错误的术语,我真正的意思是四舍五入到 0,而不是截断。
关键是,我需要比较两个双精度的整数部分,我只是将它们转换为 int,然后使用 ==,但是,正如有人在我之前的一个问题中指出的那样,如果double 不能放入整数。
所以问题是'使用 == 运算符比较之前舍入为 0 的两个双精度值是否正确,或者我应该坚持转换为 int 方法并捕获可能的异常?
javascript - 如何在 JavaScript 中对数字进行四舍五入?
在做一个项目时,我遇到了一个由前雇员创建的 JS 脚本,它基本上以以下形式创建报告
等等
问题是这些值有时可以是浮点数(具有不同的精度)、整数,甚至是2.20011E+17
. 我要输出的是纯整数。不过,我不太了解 JavaScript。我将如何编写一种方法来获取这些有时浮点数并使它们成为整数?
sql - 将值插入 SQL 浮点列会产生奇怪的结果
我正在开发一个遗留的 ASP 应用程序。我试图将一个值 (40.33) 插入 SQL Server 2000 中恰好是浮点类型的字段中。我在应用程序中可以看到的每个地方(通过一些日志记录)都将 40.33 发送到存储过程。当我在调用时对数据库运行 SQL Profiler 时,我在跟踪中看到的值为 4.033000183105469e+001
所有额外的垃圾从哪里来(183105469)?
为什么当我通过 40 或 40.25 时没有任何额外内容?
这只是使用浮动的奇怪副作用之一吗?当我写东西时,我通常使用金钱或小数或其他东西,所以对浮点数据类型不太熟悉。
floating-point - 使用 C:如何确定浮点组件的大小?
我正在寻找有关如何以独立于架构的方式查找浮点数的大小(以位为单位)和范围的建议。代码可以使用不同的标志在各种平台(AIX、Linux、HPUX、VMS,也许是 Windoze)上构建 - 所以结果应该会有所不同。符号,我只看到了一点,但是如何测量指数和尾数的大小?
java - 每个浮点数都可以精确地表示为双精度数吗?
变量的每个可能值都可以在float
变量中精确表示double
吗?
换句话说,对于所有可能的值X
,以下将是成功的:
我的怀疑是没有例外,或者如果有它只是一个边缘情况(如 +/- 无穷大或 NaN)。
编辑:问题的原始措辞令人困惑(陈述了两种方式,一种会回答“否”,另一种会回答“是”以获得相同的答案)。我已对其进行了改写,使其与问题标题相匹配。
.net - 将浮点数转换为整数时的.NET 错误?
检查一下:这个小的 .NET 控制台程序产生了有趣的结果......请注意我如何以两种不同的方式将浮点数转换为整数:
我希望“Cast”和“Convert”的输出是相同的,但它们不是......这是输出:
有人知道为什么.NET 在这里返回不同的值吗?
c++ - 如果实数可以用双精度表示,我如何编写返回 true 的 C++ 函数?
如果实数可以用双精度表示,我如何编写返回 true 的 C++ 函数?
简单测试:
java - 如何检查一个双精度数是否最多有 n 个小数位?
目前我有这个方法:
但是这种方法checkDecmialPlaces(649632196443.4279, 4)
可能失败了,因为我在以 2 为基数的基础上进行了以 10 为基数的数学运算。
那么如何才能正确完成这项检查呢?
我想得到一个双精度值的字符串表示,然后用正则表达式检查它——但这感觉很奇怪。
编辑: 感谢所有的答案。在某些情况下,我真的得到了双倍的回报,对于这些情况,我实施了以下措施:
我将其更改round
为截断。似乎所做的计算round
增加了太多的不准确性。至少在失败的测试用例中。
正如你们中的一些人指出的那样,如果我可以得到我应该BigDecimal
用来检查的“真实”字符串输入,所以我已经完成了:
我得到的double
值来自读取 excel 文件的 Apache POI API。我做了一些测试,发现虽然 API 返回数字单元格的值,但当我立即使用以下double
格式对其进行格式化时,我可以获得准确的表示: double
DecimalFormat
这也适用于无法以二进制格式精确表示的值。
floating-point - 浮点舍入检测
我正在使用 java 并指的是“双”数据类型。为了简短起见,我正在从标准输入中读取一些值,这些值在我的代码中作为双精度值读取(我更愿意使用 BigInteger 之类的东西,但现在不可能)。
我希望从用户那里获得双精度值,但有时他们可能会输入以下内容:999999999999999999999999999.9999999999 我认为这超出了双精度的准确表示,并且四舍五入到 1.0E27(可能)。
我想获得一些关于如何检测特定值是否无法以双精度表示并需要四舍五入的指示(以便我可以拒绝该值或其他此类操作)。
非常感谢你