问题标签 [floating-point-conversion]

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 投票
4 回答
392 浏览

c++ - Parse and convert denorm numbers?

In C++, we can store denorm numbers into variables without problems:

Then, we can print this variable without problems:

And it will print:

But a problem occurs when one tries to parse this number. Imagine that this number is stored inside a file, and read as a string. The problem is that:

will throw an std::out_of_range exception.

So my question is: how to convert a denorm value stored in a string?

0 投票
3 回答
1411 浏览

c++ - 存储简单小数值的浮点替代方案

首先,我要解决的问题是为始终保持均匀分布在范围内的值提出更好的表示:

这样做的动机是尝试减少用于存储此数据的字节数(应用程序受大量内存和 I/O 带宽限制)。目前使用的是 32 位浮点表示,16 位浮点被证明不够准确。

我最初的想法是尝试将数据存储在 16 位整数中并简单地使用该方案:

为了保持算法大致相同并保持使用相同的浮点硬件操作(至少一开始),理想情况下,我希望继续将此小数表示转换为浮点表示,执行操作,然后转换回分数表示进行存储。

显然,在这两个完全不同的、不精确的表示之间来回会损失精度,但对于我们的应用程序,我怀疑这可能是一个可以接受的权衡。

我做了一些研究,看看目前有什么可能给我们一个很好的起点。开创性的“每个计算机科学家应该知道的关于浮点运算的知识”一文 ( http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html ) 让我看了其他一些文章, “超越浮点”(home.ccil.org/~cowan/temp/p319-clenshaw.pdf)就是这样一个例子。

谁能指出人们在其他地方使用的可能满足这些要求的其他表示示例?

我担心表示精确性的任何潜在收益(我们目前通过使用这个特定范围浪费了大部分浮点格式)将完全被从小数表示到浮点的四舍五入的要求所抵消-指向并再次返回。在这种情况下,可能需要直接使用这种小数表示进行算术运算才能从这种方法中获得任何好处。关于这一点的任何建议会有所帮助吗?

0 投票
1 回答
309 浏览

python - 生成大量唯一的随机 float32 数字

我需要生成一个仅包含唯一随机数且具有单精度的二进制文件。然后,目的是计算该文件的熵,并将其与其他数据集熵一起使用来计算比率 entropy_file/entropy_randUnique。这个值被命名为“随机性”。

我可以在 python 中使用双精度数字执行此操作并将它们插入到set()中,使用struct.pack如下:

但是当我更改为单精度时,我不能只更改 pack 方法(这将产生很多相同的数字,而 while 永远不会结束),而且我不能用random. 我已经调查过了numpy,但生成器的工作方式与我理解的相同。我怎样才能在二进制文件中获得 370914252 (这是我最大的测试用例)唯一的 float32 ,即使它们不是随机的,我认为洗牌序列就足够了..

0 投票
3 回答
1816 浏览

c - 在不损失精度的情况下将 unsigned 转换为 double 到 unsigned

将整数值转换为浮点值并再次返回与原始整数值相同吗?

例如:

假设编译器不优化浮点转换,将x == z始终评估为true

我怀疑浮点转换中的任何表示错误总是会增加值。因此,当浮点值转换回整数值时,该值将被截断,这始终会产生原始整数值。

我的假设正确吗?

0 投票
2 回答
109 浏览

java - 打印浮点值

我有这个代码示例:

它不是打印“1.234567712E9”或类似的东西,而是打印“1.23456768E9”。据我了解,这与二进制级别的精度有关。

浮点数的精度是多少个二进制位(在逗号 (",") 符号之前和之后)?你能用简单的方式解释一下为什么会这样吗?

0 投票
1 回答
5211 浏览

python - 将浮点数转换为任何基数

在不使用 Python 内置 int 和 float 的情况下,如何将由字符串表示的浮点数转换为 Python 中 2 到 36 之间的小数?含义: convert_float("234.56", base) --> float, or ("10AB", base) --> float

如果浮点数以 .0 结尾,则结果应为整数。

将整数转换为任何基数似乎要简单得多,但是我无法为浮点数提出或找到任何解决方案。

0 投票
1 回答
324 浏览

c# - 浮点数学(整数)准确吗?

我有一个修改输入的库(将输入与一个或多个存储变量相加或相乘)。这些变量存储为浮点数。通常,输入也是一个浮点数,但在某些情况下它是一个整数。我担心这个的准确性。

我能做些什么来让这更安全吗?值的修改需要是动态的,将整数运算和浮点运算的修改分开会是一团糟。这是否像我认为的那样不安全,还是像这样的操作(int)(2.0f+(float)3)总是会产生预期的结果?

0 投票
3 回答
11529 浏览

go - 如何在 Go 中强制除法为浮点数?

我有以下代码片段:

对于 -a 3 和 -b 2 命令行参数,输出为:%!f(int=1)

强制此除法为浮点的最佳/最优雅的方法是什么?

0 投票
4 回答
2482 浏览

vb.net - 将单曲转换为双曲

将 Single 值转换为 Double 值时遇到问题。

BitStream 提供的单曲是简单的 2 到 6 位小数,在许多情况下,简单到 0.4、0.94、0.6 等(我应该注意,我收到的文档指出它们是浮点数(Java 中),来自我的理解与.NET 中的 Single 相同。

我最终需要将这些值作为双精度值,因为它们将用作 Point3D 对象(X、Y 和 Z)的坐标,并最终用于其他需要双精度值的应用程序的 API。

但是,当我使用 CDbl(valueAsSingle) 或 Ctype(valueAsSingle, Double) 执行转换时,该数字在 Double 中添加了额外的小数位,在第 9 位和更晚的小数位。这会导致最终需要使用这些值的应用程序出现问题。

首先,我很好奇为什么会这样?其次,如果我只是将 Single 转换为 String,然后执行 Double.TryParse(valueAsString),可能会出现问题

作为参考,这里有一个非常简单的例子。

结果是

0 投票
1 回答
216 浏览

c - 浮点转换的假设: (int)(float)n == n

我可以假设(int)(float)n == n任何int n吗?至少我需要这个用于非负的 31 位值。

附录。怎么样(int)(double)n ==n