问题标签 [bcmath]

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 回答
1210 浏览

php - bcmath 似乎对我的计算给出了错误的答案

我不确定我做错了什么,但这个计算

回显“83.59999999999999999670”,但其他所有计算器都给我 83.6。

有没有办法解决这个问题,或者它是 bcmath 的一个缺陷?

0 投票
3 回答
3034 浏览

php - bcpow 和 pow 有什么区别?

有人可以向我解释我是否应该使用 bcpow() 而不是 pow() 吗?为什么?

我了解并非所有 php 安装都启用了 bcmath。因此,如果我编写一个开源项目,并且希望尽可能少的依赖项/要求,我宁愿在我的代码中使用 pow()。

但是使用 pow() 而不是 bcpow() 的缺点是什么?

0 投票
3 回答
703 浏览

php - 尝试解密 PHP PseudoCrypt 类

我正在尝试创建一种方法来反转在以下位置列出的 PseudoCrypt 脚本:http ://blog.kevburnsjr.com/php-unique-hash 。在此代码中,它具有以下等式:

我已经能够获取除 $num 之外的所有变量。例如,采用以下数字:

等式将如下所示:

答案应该是 1。但是我还没有确定使方程 = $num 的方式。我想使用它在 URL 中创建的哈希,然后解密哈希以在我的数据库中执行查询。

编辑:如果有更好的方法来创建一个独一无二的哈希值,并且复制空间很小,我会对此持开放态度。

编辑:不知何故,我为 $dec 输入了错误的值。编辑:使用功能代码更新的博客帖子。

0 投票
4 回答
1450 浏览

php - 对 PHP 的 bcmul() 规模感到困惑

为什么这是输出87.5而不是 输出87.50

0 投票
1 回答
898 浏览

php - Why subtraction doesn't work properly using bcmath?

Let's say I have

it returns me 0.33333333333333333333

If I have

it returns me 0.33323333333333333332

If I have

it returns me 0.33333333333333331483

If I have

it returns me 0.33323333333333331482

So why it can't properly subtract, it's something with floating point? But it works fine when just bcdiv(1, 3, 20)

0 投票
2 回答
5044 浏览

php - PHP中的任意精度数学

我目前正在尝试弄清楚如何在 PHP 中使用任意精度的数字。所以我想我的第一个问题是什么是任意精度数学。我试着用谷歌搜索一个好的定义,但由于某种原因,没有人能用足够简单的词来表达。

二、PHP中的BCMath和GMP库有什么区别?我听说 GMP 的 API 是“更新鲜的”,但 idk。一个更好吗?

我的最后一个问题是 BCMath/GMP 需要什么类型的数字。显然它采用字符串形式的普通整数(例如“5.34”),但我已经看到 BCMath 函数直接与表示常规整数的八位字节字符串一起使用的实现(例如“\x12\x23\x45\x67”),我'听说被称为“bigint”,但谷歌再次对我没有任何帮助。

0 投票
1 回答
654 浏览

php - 使用 BCMath 时出错 - 调用未定义的方法 PEAR_Error::int2bin()

我在使用 BCMath 时遇到此错误 -

致命错误:在第 23 行的 login.php 中调用未定义的方法 PEAR_Error::int2bin()

我正在尝试一起使用 Crypt_RSA 和 BCMath。这是我的代码 -

0 投票
1 回答
1236 浏览

php - 会计系统 - MySQL 和 PHP 精度

我正在用 PHP 和 MySQL 构建一种会计系统。我的数据库有DECIMAL (11,2)货币列,还有DECIMAL用于货币操作的所有其他值(如要应用的百分比)。我以前从未编写过类似的程序,所以我不确定我做的是否正确。

我是否在数据库中使用了正确的精度级别?

在 PHP 方面:

我应该对以后可能存储在数据库中的任何值使用 BC 数学函数吗?

我还必须将货币值格式化,为小数点和.千位分隔符。我知道number_format,并且最近发现了money_format,但手册上说两者都使用浮点数操作。

我可以将number_formatmoney_format用于将显示或导出到 CSV 或 Excel 的值吗?

0 投票
1 回答
1360 浏览

php - 计算浮点幂 (PHP/BCMath)

我正在为bcmath扩展编写一个包装器,而关于错误 #10116的问题bcpow()特别烦人——它将$right_operand( $exp) 转换为(原生 PHP,不是任意长度)整数,因此当您尝试计算平方根(或任何其他root 高于1) 的一个数字,1而不是正确的结果。

我开始寻找可以让我计算数字的第 n 根的算法,我发现这个答案看起来很可靠,我实际上使用 WolframAlpha扩展了公式,我能够在保持准确性的同时将速度提高约 5%的结果。

这是一个模仿我的 BCMath 实现及其局限性的纯 PHP 实现:

上面的方法似乎很好用, 除非1 / fmod($exp, 1)没有产生 integer。例如,如果$expis 0.123456,它的倒数将会是并且8.10005和 的结果会有点不同(demo):pow()_pow()

  • pow(2, 0.123456)=1.0893412745953
  • _pow(2, 0.123456)=1.0905077326653
  • _pow(2, 1 / 8)= _pow(2, 0.125)=1.0905077326653

如何使用“手动”指数计算达到相同的精度水平?

0 投票
0 回答
191 浏览

php - 如何在 php 中使用 BC Math 的无穷大?

我找不到如何在 BC Math 中使用无穷大。让我们看一下:

一切顺利,直到 $divider 为 0。所以你例外:

问题是 $result 在以后的计算中被计算为“0”。我可以将 $result 设置为任意大数,但这破坏了精确计算的概念。此外,如果我输入太大的数字以获得准确的计算,它会变得更慢。

有没有办法克服这个问题?