问题标签 [double-precision]

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.

0 投票
2 回答
13645 浏览

matlab - MATLAB: Converting a uint32 (4-byte) value to the corresponding IEEE single-precision floating-point form

In MATLAB (r2009b) I have a uint32 variable containing the value 2147484101.

This number (its 4-bytes) has been extracted from a digital machine-vision camera in a grabbing process. According to what I understand it holds the single-precision form of the shutter-speed of the camera (should be close to 1/260s = 3.8ms).

How do I convert this 32-bit number to its IEEE single-precision floating-point representation - using what's available in MATLAB?

With mentioned value in variable n, I have tried using a combination of nn=dec2hex(n,16) and then hex2num(nn). But it seems that hex2num expects the hexadecimal coding to be double-precision and not single as it is here. Atleast I am getting weird numbers with this method.

Any ideas?

Edit: Tried @Matt's answer below:

Which gives:

I tried the IEEE 754 converter (JAVA applet) at http://www.h-schmidt.net/FloatApplet/IEEE754.html.

Using:

gives

Entering these bytes into the applet (hexadecimal) gives me the same numbers as MATLAB.

0 投票
6 回答
5556 浏览

java - Java Doubles 不擅长数学

我目前正在用java编写一个计算器程序。这是我的第一个java程序,我习惯了c++。

我注意到 java 中的双精度与 c++ 中的双精度完全不同。在 java 和 c++
4.1*3
that/.1中试试这个

它应该是
12.3,然后是 123,c++ 给出了这个结果,但是 java 给出了
12.299999999999999 和 122.99999999999999

我怎样才能像在 c++ 中使用双打一样进行数学运算,我知道在程序中使用 12.299999999999999 与 12.3 相比没有任何区别,但是当用户阅读数字时,这非常难看。我已经研究过 BigDecimal 类,但我不能用那个类做三角函数和对数等等

0 投票
1 回答
438 浏览

objective-c - 减去 2 个不同的双精度数得出零

我正在构建一个基于 loc 的应用程序,使用 CLLocationManager 和 locationManager:didUpdateToLocation: fromLocation: 我试图确定用户是否移动到足以触发其他处理。我正在使用双变量。我很久以前就学会了不要将双打等同,而是将增量与阈值进行比较。我将 abs(旧 - 新)与 0.0005f 的增量进行比较

但是这段代码...

产生这个输出:delta 为零。

GPSLogger.m:(26)> GPSLOG: GPS: 39.4425- North, 77.8132- West/n MeterAccuracyFormat 0

GPSLogger.m:(26)> GPSLOG: 找到新坐标:Lat:39.442494 Lon:-77.813175 DataModel.m:(197)> DistanceFromLoc: 710.517020 DataModel.m:(199)> Got a delta > 0.000500 DataModel.m:( 214)> Delta LAT:abs(当前 (39.440120) - 新 (39.442494)) = delta 0.000000。

数字是否溢出?有没有更好的方法来做到这一点(即一种有效的方法)?

谢谢。

0 投票
3 回答
3643 浏览

java - java.lang.Math.pow(x, n) 对于大 n 有多准确/精确?

我想计算(1.0-p)^n其中 p 是 0 和 1 之间的双精度数(通常非常接近 0),而 n 是一个正整数,可能是数百或数千的数量级(可能更大;我还不确定)。如果可能的话,我很乐意为此使用内置的 Java java.lang.Math.pow(1.0-p, n),但我有点担心在我感兴趣的值范围内这样做可能会导致准确性/精度的巨大损失。有没有人有粗略了解使用 Java 的实现可能会出现什么样的错误?我不确定在他们的实现中发生了什么(日志和/或泰勒近似?),所以我不能冒险一个很好的猜测。

我最关心的是相对误差(即偏差不超过一个数量级)。如果答案是 Java 的实现会产生太多错误,你有什么好的库推荐吗(但我希望这不应该是必需的)?谢谢。

0 投票
1 回答
318 浏览

java - 返回并绑定到列表视图的双精度数被截断

我正在为我的 Android 应用程序查询我的 sqlite 数据库。

然后我使用一个简单的光标适配器将数据绑定到列表视图。

从数据库中调用了两个双打,在列表视图中,唯一显示为 6 位长。

示例:43.6234-116.203

在数据库中(我把它转储了)这些数字有更多的数字。

什么地方出了错?这是列表视图的行 XML

0 投票
3 回答
817 浏览

java - Java:三角函数和双重误差导致 NaN

我有一个使用纬度和经度的距离公式:

lat1,lng1,lat2,lng2 是双原语。它们以双重原语的形式出现在我面前,对此我无能为力。

问题是,当我有一对相同的经度或纬度时,公式有时会返回 NaN。我相信这是因为我取的数字的反余弦值略大于 1,而实际上它应该正好是 1。如果这些点也是对映的,我可能会遇到问题,它们可能略小于 - 1.

我怎样才能最好地解决这个问题?

0 投票
2 回答
3159 浏览

fortran - 带有简单 MKL BLAS 例程的 Fortran 双精度程序

在尝试在一个简单的程序中混合精度 - 使用实数和双精度 - 并使用 BLAS 的 ddot 例程,我为双精度部分提出了不正确的输出。这是代码:

我尝试使用 MKL BLAS 库同时编译 gfortran 和 ifort,如下所示:

输出是:

如何让 ddot 例程正确处理双精度值?

此外,添加 -autodouble 标志 (ifort) 或 -fdefault-real-8 (gfortran) 标志会使两个 ddot 例程都工作,但 sdot 例程会失败。

编辑: 我添加了隐式 none 语句,以及 ddot 和 sdot 函数的两个类型语句。如果没有为函数调用指定类型,则 ddot 被隐式键入为单精度实数。

0 投票
2 回答
1181 浏览

objective-c - ceil(double) 中的“double”有什么作用?

我有一个数字(比如说 34),我想找到它的下一个十的倍数。我可以通过以下方式做到这一点:

  1. 将数字除以 10
  2. 将其四舍五入为整数
  3. 乘以 10。

经过一番研究,我发现这是 Objective C 中的代码:

我的问题是:(double)for 是什么,为什么删除(double)会导致它向下舍入而不是向上舍入?

我从谷歌搜索中了解到将浮点格式更改为“双精度”,但老实说,这对我来说太复杂了。谁能提供一个简单的解释它在做什么?

0 投票
3 回答
6303 浏览

c - 主机到网络双重?

我想通过网络发送一些双精度浮点数。(标准 C,标准套接字)没有 htond 或 ntohd 将数据与网络字节顺序进行转换。我该怎么办?我脑子里有几个解决方案,但我想知道常见的做法是什么。

(我也想知道发送 64 位整数的常见做法是什么,比如 gstreamer 使用的 gint64 值)

编辑:这是我想到的一种解决方案。我认为它适用于任何大小的整数,但它适用于双精度数吗?

0 投票
3 回答
2519 浏览

javascript - 帮助双精度加法

我正在测试我的一些代码,在javascript中我添加了 .1+.2 它给了我 .30000000000000004 而不是 .3 。我不明白这一点。但是当我添加 .1+.3 时,它给了我 0.4。我用谷歌搜索它,发现它是关于双精度加法的。但我不知道它是什么。