问题标签 [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.
php - 如何使用 bcmath 以一种好的方式添加许多值?
如果我想将几个值与 BCMath 一起添加,我可以这样做:
但它使它变得如此难以理解,而且很容易出错。请告诉我还有另一种解决方法...!?
php - 使用 bcmath 的快速任意精度对数
这就是我所拥有的
但这需要 5.7 秒才能运行bcln(100)
(100 位自然对数,小数点后 10 位)。此外,对于更多小数位,它并不总是准确的。有更好的算法吗?
对于特定的运行,需要 573 次迭代才能确定结果。
php - Phpunit 和浮点数存储为字符串
我目前正在一个项目中使用 BC Math 扩展。
在我的单元测试中,有一些类似于以下的比较:
这将通过:
这不会通过:
我读过一些似乎暗示如果 is_numeric 返回 true 两个字符串将被视为数字的位。phpunit 中是否已经有将两个数字字符串作为字符串进行比较的功能。我知道我可以编写自定义断言,但如果该功能已经存在,我不想这样做?
我看起来很努力,似乎无法看到功能,但觉得它必须存在......
php - MySQL,使用十进制类型,使用数学函数时仍然得到不精确的输出
拥有一个 PHP 脚本 - 使用所有正确的 bcmath 函数,并完全理解浮点数的问题。我也在使用小数列,因为我的印象是,它们被存储为不同的类型,并且数学更好。
所以我有一个查询: INSERT INTO mytable (identifier, amount) VALUES ('identifer', 'some_number') ON DUPLICATE KEY UPDATE amount = amount + some_number;
基本上 - 如果我们没有一行,插入它,如果有,添加 some_number。
some_number 列是十进制(24,8)
当 some_number 等于 72100312.72872099 并且当前行在 0.00000000 处归零时运行此命令,数学以列为 72100312.72872100 结束。
如果 some_number 是 72100312.72872098 它工作正常。如果是 72100312.72872101 就可以了。如果我这样做 11111111.72872099 很好。
如果当前行不为零,而是 0.00000005,则 72100312.72872099 加得很好,总数为 72100312.72872104,如预期的那样。
这就像它搞砸了一些数学。我认为十进制列对此免疫。
有没有办法解决这个问题,或者以更好的方式进行更新?我真的宁愿不必进行选择、bcadd 和更新。这种类型的行(在重复更新时插入)在代码中出现了大约 120 次。对 select/bcadd/update 进行了很多改造。
附录:只需阅读 5.0 之前的 MySQL 服务器转换为浮点数进行数学运算。我是5.5。它不是 < 5.0 的问题。
Edit2:客户端版本是 mysqlnd 5.0.11 - 不确定这是否是问题的一部分?服务器应该做数学,对吗?
php - translate a few >32-bit operations to work in a php 32-bit environment
My webhost reports that PHP_INT_MAX is 2147483647, i.e. it's a 32-bit environment. I'm trying to convert a couple of mathematical operations that currently works in a 64-bit environment, so that they also work in the 32-bit environment.
The above yields de46c6d30bfa6e097fca82f63c2f4f4c
in the 32-bit environment, but it should actually yield cd97cc68c1038b485b081ba2aa3ea6fa
(which it currently does in the 64-bit environment). I'm guessing that the bitshift operator is causing the mismatch, but I'm not sure (I'm not a php-expert, nor a mathematician, and I'm not the author of the original code :)
BCMath is installed in the 32-bit environment, and there may be other frameworks installed as well (I can check the phpinfo if needed).
How would I go about fixing this? Is it possible?
// Linus
Edit: Yes, I know the code looks weird, but it is working exactly as intended in a 64-bit environment.
php - 正确使用 bcmath 函数
我以前从未使用过这些bcmath
数字,并且一直在阅读有关比较和操作的一些信息floating point numbers
,这使我了解了这些bcmath
功能。
我知道您在比较浮点数时绝对应该使用类似函数的东西,因为即使数字看起来相同,它们内部存储的可能也不相同;但是真的有必要使用其他 bc 函数吗?bccomp
就像将两个浮点数相加或对它们进行任何其他数学运算有什么危害?浮点数不是正确的吗(如果您的精度很高,可能是最后一位数字除外),因此可以随心所欲地进行操作吗?
php - CentOS 6.5 - PHP 5.6.7 和 bcmath
我正在尝试在 CentOS 6.5 上安装 php-bcmath,而我当前的 PHP 版本是 5.6.7。我尝试安装它的原因是我有一个我正在使用的论坛插件,由于我的服务器使用最新的 PHP 版本,它会抛出错误。下面列出了它抛出的错误:
Flags/Listener/Includes/Reader/Decoder.php 在第 258 行,referer: http://IP Address/admin.php
[2015 年 4 月 7 日星期二 03:42:15] [错误] [客户端 IP 地址] PHP 致命错误:调用 /var/www/html/library/Snog/CountryFlags/ 中的未定义函数 Countryflags\Db\Reader\bcadd() Listener/Includes/Reader/Decoder.php 在第 258 行,referer:http://IP Address/admin.php
[2015 年 4 月 7 日星期二 03:45:50] [错误] [客户端 IP 地址] PHP 致命错误:调用 /var/www/html/library/Snog/CountryFlags/ 中的未定义函数 Countryflags\Db\Reader\bcadd()第 258 行的 Listener/Includes/Reader/Decoder.php
[2015 年 4 月 7 日星期二 03:45:56] [错误] [客户端 IP 地址] PHP 致命错误:调用 /var/www/html/library/Snog/CountryFlags/ 中的未定义函数 Countryflags\Db\Reader\bcadd()第 258 行的 Listener/Includes/Reader/Decoder.php
因此,当我尝试通过 yum install 在我的服务器上安装 php-bcmath 时,我得到:
[root@forums logs]# yum install php-bcmath 加载的插件:
fastestmirror,替换从缓存的主机文件加载镜像速度
* 基础:mirror-centos.hostingswift.com
* 附加:mirror.oss.ou.edu
* 更新:mirror.team -cymru.org
* webtatic: us-east.repo.webtatic.com 设置安装过程解析依赖
--> 运行事务检查
---> 将安装包 php-bcmath.x86_64 0:5.3.3-40.el6_6
--> 处理依赖:php-common(x86-64) = 5.3.3-40.el6_6 用于包:php-bcmath-5.3.3-40.el6_6.x86_64
--> 运行事务检查
---> 包 php -common.x86_64 0:5.3.3-40.el6_6 将被安装
--> 处理冲突:php56w-common-5.6.7-1.w6.x86_64 冲突 php-common 5.5.0
--> 完成依赖解析错误:php56w-common 与 php-common-5.3.3-40.el6_6 冲突.x86_64 您可以尝试使用 --skip-broken 来解决问题 您可以尝试运行:rpm -Va --nofiles
--nodigest [root@forums logs]#
有什么方法可以让安装正常工作吗?
谢谢!
php - php - bcadd 具有不同的点精度
当我跑步时在我的 Windows 盒子上
它输出149.0000000000
但是当我将相同的代码上传到我的 Linux 主机时,输出是149
.
为什么?
apache - 通过 .htaccess 在共享主机中的 bcmath
我需要在默认情况下不提供 bcmath 的共享主机中使用它。所以我问了托管公司,他们不会提供。我会离开这个主机,因为大多数现代主机都提供了当前主机不提供的这个和其他功能。但是现在我只想完成工作,而不是在尝试 B 计划之前建议我的客户离开主机。是否可以使用 .htaccess 或其他方法在共享主机中获得 bc 数学?除了这个http://php.net/dl之外,我在搜索过程中找不到任何东西,但我不知道它是否适用于我的案例,而且我没有找到足够的信息。这是 PHP 构建:
php - 如何从 bcdiv 函数获得浮点部分中包含实数位数的输出?
问题是我不知道输出中浮点部分的位数。例如,我不能分配 4 。浮点中可能有 100 位,例如 n。我该如何解决?
太感谢了...