问题标签 [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.
java - Java浮点高精度库
有哪些 Java 库可以快速实现精度为数千位的浮点或定点运算?它们的性能如何?
对我的一个要求是它实现了一种乘法算法,该算法优于简单乘法算法,该算法需要 4 倍的时间来获得 2 倍大的数字(比较乘法算法)。
.net - 在 .NET 中除以两个整数值并获得浮点商的最高效方法是什么?
考虑 C# 中的以下签名:
以下实现之间是否存在性能差异?
我假设以上两个都返回相同的答案。
我错过了任何其他等效的解决方案吗?
php - 带浮点的 PHP 精度 - 复杂方程 = 1
我有以下等式
1 - ((.5 * 0.83333333333333) ^ 2 + (.5 * 0.83333333333333) ^ 2 + (.5 * (1 - 0.83333333333333)) ^ 2 + (.5 * (1 - 0.83333333333333)) ^ 2)
在 Php5 中,这导致答案为 1 而不是 0.63(在两台机器上,OSx 和 Centos)。我应该专门使用 Php 的 bc 数学函数来做这样的方程吗?
python - 浮点数和小数点的小数位问题。十进制
我似乎在使用浮点数时失去了很多精度。
例如我需要求解一个矩阵:
这是我用来从文本文件中导入矩阵的代码:
我需要使用 gauss-seidel 求解,所以我需要重新排列 x、y 和 z 的方程:
这是我用来重新排列方程式的代码。b
是一个系数矩阵,y
是答案向量:
然而,我得到的答案并不精确到小数位。
例如,从上面重新排列第二个等式后,我应该得到:
我得到的是:
这似乎不是一个大问题,但是当您将数字提高到非常高的幂时,误差会很大。有没有解决的办法?我尝试了这Decimal
门课,但它不适用于权力(即,Decimal(x)**2
)。
有任何想法吗?
objective-c - 如何在 Objective C 中将浮点数转换为 int?
完全是新手问题,但这让我发疯!我正在尝试这个:
但我收到一个错误,说本质上 integerValue 不适用于浮点数。
我该怎么做?
string - 如何在 Perl 中将字符串转换为数字?
我有一个包含十进制值的字符串,我需要将该字符串转换为浮点变量。所以我拥有的字符串的一个例子是“5.45”,我想要一个等效的浮点数,所以我可以添加 .1 到它。我在互联网上搜索过,但我只看到如何将字符串转换为整数。
sql-server-2005 - 在 SQL Server 2005 中将值转换为 FLOAT 时出错
我正在尝试让一个存储过程为生病的同事工作(因此不能要求指导)。
我有一个具有此确切过程的 SQL Server 2005 数据库,并且我正在尝试制作脚本来转换测试数据库以匹配此开发数据库。我的脚本有几行,如:
该过程本质上是“从另一个表中插入表(所有字段),其中字段 = @input”
当我运行脚本时,我收到错误:
并且没有创建该过程。但是,我比较了开发和测试环境中的源表,它们完全匹配。并且该过程完全按照开发环境中的脚本存在。
我不能问我的同事是否必须做任何特殊的杂技来创作这个剧本,所以我问你。我进行了一些搜索,发现 float 应该是 FLOAT(6,1) (或类似的)形式,但这不是他所拥有的,而且我不愿意更改测试环境以使其获胜与开发人员不符。
添加
评论者是正确的。我被告知错误与以下演员有关:
我可以发布整个查询,但它很长!所以,相反,我将只包括强制转换的字段,以及第一个和最后一个字段。我想问一下我的同事,那一个领域是否有误,只需要直接转换即可。他下周一就会回来,所以可能需要等那么久。
our_File_CHAR 定义为
our_File 定义为
performance - Core 2 x87 浮点性能
我正在使用一些数字处理代码,这些代码本质上是浮点密集型的,而且速度很慢。它是研究代码,因此可以针对一种架构进行定制,并在 Core 2 Quad 机器上运行。我的理解是,对于 Pentium 4/Netburst 架构,Intel 严重剥离了 x87 FPU,采用了更加以 SSE2 为中心的设计。这导致 x87 代码的性能很糟糕。但是,Core 2 架构与 P6 架构的关系比 Netburst 更密切。
我的编译器根本不针对 SSE AFAIK,我的理解是很少有编译器能很好地做到这一点。此外,我使用的是相当前沿的 D 语言,因此可用的编译器并不多。但是,我不想切换语言,既是因为我现有代码的惯性,也是因为尽管它不成熟,但我真的很喜欢 D。
Core 2 架构是否也具有精简的 x87 FPU?如果是这样,解决此问题的最佳方法是什么?
java - 在 Java 中使用 double 保持精度
上面的代码打印:
我如何才能让它打印(或能够将其用作)11.4?
c - 从 i386 移动到 x86_64 时的浮点精度
我有一个为 Linux x86 32 位开发的应用程序。根据结果,有很多浮点运算和大量测试。现在我们将它移植到x86_64,但是在这个架构下测试结果是不同的。我们不想为每个架构保留一组单独的结果。
根据文章An Introduction to GCC - 对于 GNU 编译器 gcc 和 g++,问题是 X86_64 中的 GCC 假定fpmath=sse而 x86 假定fpmath=387。387 FPU 对所有操作使用80 位内部精度,并且仅将结果转换为给定的浮点类型(float、double 或 long double),而 SSE 使用操作数的类型来确定其内部精度。
我可以在编译自己的代码时强制 -mfpmath=387并且我的所有操作都可以正常工作,但是每当我调用一些库函数(sin、cos、atan2 等)时,结果又是错误的。我认为这是因为libm是在没有 fpmath 覆盖的情况下编译的。
我尝试使用 387 仿真自己构建 libm(glibc),但它导致了很多崩溃(不知道我是否做错了什么)。
有没有办法强制进程中的所有代码使用 x86_64 中的 387 仿真?或者也许一些库在两种架构上都返回与 libm 相同的值?有什么建议么?
关于“你需要80位精度”的问题,我不得不说这对于个人操作来说不是问题。在这种简单的情况下,差异非常小,没有任何区别。但是,当复合大量操作时,错误会传播,最终结果的差异不再那么小,而且会产生影响。所以我想我需要80位精度。