precision 相关问题

有关编程中数值精度的问题。对于分类精度,请使用标签[precision-recall]。

如何将全精度十进制值插入clickhouse?

即使在 clickhouse 中使用 Decimal() 类型后,长精度值也会被截断。如何解决这个问题? 例如,值 5914.922286612016543134 被截断并插入为 5914。

回答 1 投票 0

哪些数字在 IEEE-754 二进制 64(“双精度”)和 64 位二进制补码 long 中具有相同的按位表示

是否存在 64 位二进制补码表示形式(有时用于 long)和 IEEE-754 二进制 64 表示形式(通常用于 double)相同的值?如果有的话,有多少个这样的

回答 1 投票 0

长整型和双精度格式具有相同按位表示的数字

是否存在长整型(使用二进制补码)和双精度型(使用 IEEE 754 格式)的二进制表示形式完全相同的值?如果有,存在多少个这样的数字,分别是什么

回答 1 投票 0

在处理非常接近零的数字或其他边缘情况时,如何处理 C 中的浮点精度

我用 C 语言编写了一个程序,根据给定的三个点计算三个点。所以我们给定点 A、B、C 并计算点 A'、B'、C'。现在有三种方法可以实现这些点...

回答 1 投票 0

x86_64 的 clang 上的半精度浮点支持

我正在尝试在 x86_64 上试验半精度浮点数 (_Float16)(为什么不呢?)。 clang-17(在 ubuntu-20.04 上)似乎可以正确编译,但链接器显示以下错误: /usr/bin/ld: /tmp...

回答 1 投票 0

从 float 转换为 big.Int 时如何保持 golang 中大数的精度

我有一个输入可能是非常大或非常小的浮点数,需要将其转换为big.Int,但由于某种原因,存在一些精度损失。 我知道这应该发生在非常小的人身上......

回答 1 投票 0

如何在 PostgreSQL 中获取数组元素的“数字精度”、“数字比例”和“日期时间精度”元数据?

对于一个开源项目,我需要获取PostgreSQL数据库中数组的“数字精度”,“数字比例”和“日期时间精度”。 我正在使用 information_schema.columns 并将其加入到

回答 1 投票 0

有没有办法提高 qutip 函数中的数字精度?

我有一个问题,两个相对熵的差异是有限的,但它们各自发散。 qutip 中计算相对熵的函数是 qt.entropy_relative(state1, sta...

回答 1 投票 0

Pandas 数据框中的浮点数据类型对于高精度十进制值的行为不一致

Pandas 数据框给出了不正确的高精度十进制值。 例如: oracle表中的数据是 45.200000000000003 12.699999999999999 99.745663 oracle中的数据类型是number(28...

回答 1 投票 0

使用float类型计算时如何提高精度?

我遇到了问题。代码如下: 浮动 a = 2.f; 浮点t = 0.0000025f; 浮动 b = a + t; 浮点数 c = b - a; printf("b = %.8f ”,b); printf("c = %.8f ”,c);

回答 1 投票 0

Numba cuda.jit 和 njit 给出不同的结果

在下面的例子中,我有一个简单的CPU函数: 将 numpy 导入为 np 从 numba 导入 njit、cuda @njit def cpu_func(a, b, c, d): 对于范围内的 i(len(a)): 对于 l 在范围内(d[i], 0, ...

回答 1 投票 0

与 int 相乘的双倍在 .NET Core 中变得不太准确

我正在使用不同版本的.NET 尝试此代码块: 使用系统; 使用 System.Linq; 公开课节目 { 公共静态无效Main() { 德...

回答 1 投票 0

双精度和单精度浮点数?

我想知道为什么双精度和单精度数字有时相等,有时不相等。例如,当我有以下内容时,它们不相等: 将 numpy 导入为 np x=np.float64(...

回答 3 投票 0

直观上为什么成对求和比朴素求和误差更小

在 numpy sum 文档中 https://numpy.org/doc/stable/reference/ generated/numpy.sum.html 它提到,它使用成对求和来代替朴素求和以获得更好的错误率 我很困惑...

回答 1 投票 0

与轴尺寸相比,绘制小楔形时精度较差

我正在尝试重新创建此网站上的图表:https://bumps.live/torpids/2022。我正在使用 matplotlib,在绘制徽标时遇到问题,我用 MWE b 重新创建了徽标...

回答 2 投票 0

尝试在 C++ 中计算汉明权重时发生溢出

我正在尝试编写一个简短的代码来计算整数的汉明权重: 类解决方案{ 民众: int 汉明权重(int n) { 如果(n==0){ 返回0; }别的{ ...

回答 2 投票 0

OpenGL:GL_R11F_G11F_B10F 的精度对于 8 位 RGB 图像来说好吗?

从“图像格式”中,我们看到: 11 位浮点数没有符号位;它有 6 位尾数和 5 位指数。 从“半精度浮点格式”中,我们可以推断出......

回答 1 投票 0

unsigned long long int 参数的日志

我需要在c++代码中进行以下计算: (((n*log(n)) / log(4)) + 1) 其中 n 的类型为“unsigned long long int”(并且是 2 的幂,因此结果应该是整数)。 对于非常大的n...

回答 1 投票 0

C++ pow异常类型转换

当我直接输出 std::pow(10,2) 时,我得到 100,而执行 (long)(pow(10,2)) 给出 99。有人可以解释一下吗? 计算< 当我直接输出std::pow(10,2)时,我得到100,而做(long)(pow(10,2))给出99。有人可以解释一下吗? cout<<pow(10,2)<<endl; cout<<(long)(pow(10,2))<<endl; main函数中的代码基本上就是这样。 编译器是 mingw32-g++.exe -std=c++11 使用 CodeBlocks Windows 8.1 如果有帮助的话 浮点数是近似值。有时您会得到一个可以精确表示的数字,但不要指望它。 100 应该可以表示,但在本例中却不能。有些东西注入了近似值并毁掉了每个人。 从浮点类型转换为整数时,整数不能容纳任何小数值,因此它们会被毫不客气地丢弃。没有隐式舍入,分数被丢弃。 99.9 转换为 99. 99,在 99 后带有一百万个 9。 因此,在从浮点类型转换为整数之前,先对数字进行四舍五入,然后进行转换。除非丢弃分数是你想要做的。 cout,以及大多数输出例程,在打印之前礼貌地、默默地舍入浮点值,因此,如果有一点近似值,用户不会介意。 这种不精确性也是您不应该直接比较浮点值的原因。 X 可能不完全是 pi,但它可能足够接近您的计算,因此您可以与 epsilon(一个捏造因子)进行比较,以判断您是否足够接近。 我觉得有趣的是,如果没有using namespace std;,我什至不会看到这个问题,并且花了很多时间试图解决这个问题。 (long)pow(10,2) 提供了 100 的预期结果。(long)std::pow(10,2) 则没有。 pow 和 std::pow 从 10,2 到 100 的路径存在一些差异,导致结果略有不同。通过将整个 std 命名空间拉入他们的文件,OP 不小心搬起了石头砸自己的脚。 这是为什么? 在文件顶部我们有 using namespace std;,这意味着编译器在查找 double pow(double, double) 重载时不仅仅考虑 pow,它还可以调用 std::pow 并且 std::pow 是一个漂亮的小模板,确保当使用 float 和 double 以外的数据类型调用时,会发生正确的转换,并且所有内容都是相同的类型。 (long)(pow(10,2)) 不匹配 double pow(double, double) 以及它与 的模板实例相匹配 double std::pow(int, int) 据我所知,这最终解决了 return pow(double(10), double(2)); 在一些模板巫毒之后。 有什么区别 pow(double(10), double(2)) 和 pow(10, 2) 在调用 int 时从 double 到 pow 的隐含转换是,我不知道。打电话给语言律师,因为这是一些微妙的事情。 如果这纯粹是一个舍入问题那么 auto tempa = std::pow(10, 2); 应该容易受到攻击,因为 tempa 应该正是 std::pow 返回的值 cout << tempa << endl; cout << (long) tempa << endl; 输出应该是 100 99 我明白了 100 100 因此立即将 std::pow(10, 2) 的返回值转换为 long 与存储然后转换不同。诡异的。 auto tempa 并不完全是 std::pow 返回的内容,或者还有其他事情发生,对我来说太深了。 这些是 std::pow 重载: float pow( float base, float exp ); double pow( double base, double exp ); long double pow( long double base, long double exp ); float pow( float base, int iexp );//(until C++11) double pow( double base, int iexp );//(until C++11) long double pow( long double base, int iexp ); //(until C++11) Promoted pow( Arithmetic1 base, Arithmetic2 exp ); //(since C++11) 但是你奇怪的行为是 MINGW 对双重存储的奇怪以及 Windows 运行时不喜欢它。我假设 Windows 看到的是类似 99.9999 的东西,当它被转换为整数类型时,它就会占据地板。 int a = 3/2; // a is = 1 mingw 使用 Microsoft C 运行时库,其 printf 的实现不支持“long double”类型。作为解决方法,您可以转换为“double”并将其传递给 printf。 因此,你需要 double double: 在 x86 架构上,大多数 C 编译器将 long double 实现为 x86 硬件支持的 80 位扩展精度类型(有时存储为 12 或 16 字节以保持数据结构对齐),如 C99 / C11 标准 (IEC 60559浮点运算(附录 F))。 Microsoft Visual C++ for x86 是一个例外,它使 long double 成为 double 的同义词。[2] Microsoft Windows 上的英特尔 C++ 编译器支持扩展精度,但需要使用 /Qlong‑double 开关来实现 long double,以对应于硬件的扩展精度格式。[3]

回答 2 投票 0

发送“成本”列中的所有值所需的精度“39”超出了支持的最大精度“38”。这些值必须全部适合单个精确值

我发现了一篇类似的帖子,但没有实际的解决方案。谁能帮我解决这个问题吗? 我有一个 .Net DataTable,其中有一列 Decimal 类型。数据表被传递到 SQL Server 存储过程...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.