PHP 添加 2 个小数点数字(金钱)会得到错误的总金额结果

2023-11-25

我的 MySQL 数据库中有一个客户发票表,其中有一个名为“价格”的 DECIMAL(10,2) 字段。

当在 php 中获取这些值并计算总金额时,

例如:在脚本中

$totalAmount = 0; // initialised them to 

   while(records){              

       $amount = $inv_amount - ($pay_amount + $onamount); //float i guess. 2.22, 14.22
       $totalAmount = $totalAmount + $amount; //float i guess. 2.22, 14.22 ..etc

    }

when echo $totalAmount;最终数量有 0.01 的轻微误差,但是在处理 20,000 左右的大型数据集时,此误差变得非常大,例如 200+

在处理价格等 PHP 中的这些数字时,最安全的方法是什么?或者我最终会遇到潜在的舍入错误以及类似在使用浮点数据类型时常见的问题吗?

正在使用

round 
number_format

最适合此类金融应用程序的解决方案是什么?


事实上,浮点数并不精确。
以分计算(乘以 100 并以整数计算),或使用字符串计算BC Math.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 添加 2 个小数点数字(金钱)会得到错误的总金额结果 的相关文章

  • 使用 Laravel 4 验证多个文件上传

    如何在 Laravel 4 中验证上传文件的数组 我已将其设置为允许多个文件 并且已测试这些文件是否存在于 Input file files 数组中 但如何验证每个文件呢 这是我尝试过的 notesData array date gt In
  • 删除PHP字符串中所有不匹配的字符?

    我有一个文本 我想从中删除所有不属于以下字符的字符 所需字符 0123456789 abcdefghijklmnopqrstuvwxyz n 最后一个是我确实想保留的 n 换行符 要匹配除列出的字符之外的所有字符 请使用反转字符集 http
  • 优雅地处理没有数据的 amcharts

    我想知道我的 dataProvider 是否为空 amCharts绘制时默认为null 我怎样才能动态地处理它 var chart AmCharts makeChart chartdiv theme none type serial dat
  • 如何在响应ajax codeigniter后停止执行其他控制器

    我想知道如何在响应输出 json 数据后停止执行函数和涉及的其他控制器 就我这里的情况而言 我只是打电话test 函数于dashboard控制器 In dashboard构造函数将执行MY Login library In MY Login
  • Apache 访问 Linux 中的 NTFS 链接文件夹

    在 Debian jessie 中使用 Apache2 PHP 当我想在 Apache 的文档文件夹 var www 中创建一个新的小节时 我只需创建一个指向我的 php 文件所在的外部文件夹的链接 然后只需更改该文件夹的所有者和权限文件夹
  • PHP严格标准:声明应该兼容

    我有以下类层次结构 class O Base class O extends O Base abstract class A Abstract public function save O Base obj class A extends
  • 如何使用 php 下载/打印页面的特定部分

    我有一个 HTML 页面如下 Lorem Ipsum is simply dummy text of the printing and typesetting industry Lorem Ipsum has been the indust
  • 从 smarty 访问 PHP 文件的变量(本地或全局)

    我有一个 php 文件 其中包含一些本地和全局变量 例如 foo 从此文件中调用 smarty 对象 如何在不更改 PHP 文件的情况下从 smarty 脚本访问 foo Thanks 如果你有一个名为 BASE 的常量变量 并且定义如下
  • Symfony2 Assetic 和 Less Sourcemaps

    我不确定如何破解 assetic less 过滤器以输出源映射文件 我这里指的是LessFilterhttps github com kriswallsmith assetic blob master src Assetic Filter
  • 从 .phar 存档中提取文件

    对于 Phar 文件 我完全错过了一些东西 我正在安装一个需要 phpunit pdepend 和其他依赖项的项目 我将它们作为 phar 文件获取 但是 我无法使用命令行工具 php 命令 从中提取文件 我用谷歌搜索了这个问题 但没有发现
  • PHP 在输入流中使用 fwrite 和 fread

    我正在寻找将 PHP 输入流的内容写入磁盘的最有效方法 而不使用授予 PHP 脚本的大量内存 例如 如果可以上传的最大文件大小为 1 GB 但 PHP 只有 32 MB 内存 define MAX FILE LEN 1073741824 1
  • MySQL 追加字符串

    How can I append a string to the end of an existing table value Let s say I have the table below And let s say that Mari
  • 在 Wordpress 站点中进行 AJAX 调用时出现问题

    我在使用 Wordpress 站点功能的 AJAX 部分时遇到了一些问题 该功能接受在表单上输入的邮政编码 使用 PHP 函数来查找邮政编码是否引用特定位置并返回到该位置的永久链接 我的第一个问题是关于我构建的表单 现在我的表单操作是空白的
  • 使用 Ajax.Request 将 JSON 从浏览器传递到 PHP 的最佳方法

    您好 我有一个 JSON 对象 它是一个二维数组 我需要使用 Ajax Request 将其传递给 PHP 我知道的唯一方法 现在我使用js函数手动序列化我的数组 并获取以下格式的数据 s 1 d 3 4等 我的问题是 有没有办法更直接 有
  • PHP HEREDoc (EOF) 语法在 Sublime Text 3 上突出显示与正斜杠的差异

    我不熟悉 Sublime Text 3 如何使用语法突出显示 例如 如果它纯粹依赖于主题 或者它内置于主题运行的标准中 但就我而言 使用 PHP 的 HERE 文档和转发存在一些语法突出显示差异斜线 一旦出现正斜杠 ST3 就会认为以下所有
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • 使用正则表达式提取两个短语之间的所有单词[重复]

    这个问题在这里已经有答案了 我正在尝试使用以下正则表达式提取两个短语之间的所有单词 b item W w W 0 2 1 one W w W 0 3 business b b item W w W 0 2 3 three W w W 0 3
  • 为什么 Composer 降级了我的包?

    php composer phar update这样做了 删除了 2 3 0 软件包并安装了整个 2 2 5 Zend Framework php composer phar update Loading composer reposito
  • Magento - 自定义支付模块

    这是一个非常普遍的问题 但这里是 我正在尝试在 Magento 中创建一个自定义支付模块 我创建了一个 常规 模块 可以连接到 Magento 事件 观察者模型 但是我如何告诉 Magento 将模块视为支付模块 以便它显示在管理后端和结账

随机推荐

  • 未对齐的内存访问:是否定义了行为? [复制]

    这个问题在这里已经有答案了 考虑以下代码 include
  • 对“REST”一词及其含义的误解是什么[关闭]

    Closed 这个问题是基于意见的 目前不接受答案 弄清楚什么是真正的 RESTful 应用程序和 或 api 并不总是那么容易 因为对 REpresentational State Transfer 架构风格的含义和范围存在某种误解 最初
  • 计算 MKMapView 中 MKPolygon 的面积

    我只是不知道如何计算 MKMapView 上的面积 有谁解决过这个问题吗 这是我的代码 但它返回太多 func ringArea gt Double var area Double 0 if templocations count gt 2
  • Strapi 路线返回 404 未找到

    我遇到一个问题 API 中的所有路由都返回404 Not found 我跟着从 Docker Hub 拉取部分位于Strapi strapi docker 除了运行图像之外 我所做的是创建一个名为的新内容类型post包含三个字段 如果我尝试
  • 当用户正在编写时,如何在 RichTextBox 中使用不同的颜色为不同的单词着色,并在单击该彩色文本时引发事件

    当用户在富文本框中写入一些单词时 如果该单词与某个特定单词匹配 则该单词的颜色应该自动更改 当用户单击特定的彩色文本时 它应该引发一个事件 鉴于要求 1 用户在 RichTextBox 控件中插入一些文本 2 如果输入的单词是预定义单词列表
  • AngularJS从属性文件中读取

    在 angularJS 中 如何从属性文件中读取值 connection properties url http localhost 8080 user me get GET post POST 应用程序 js var app angula
  • Node.js如何在快速路由中使用socket.io

    在我的 node js 脚本之一中 我尝试在快速路由中使用 socket io 我发现了很多类似的问题 并尝试按照建议实施解决方案 但没有任何结果 可能是因为我对快递路线不了解 我点击了下面的链接 如何在 Node js 的快速路由中使用
  • JSX (React) 中的花括号意味着什么?

    例如 要在反应中设置样式 您可以这样做 var css color red and h1 Hello world h1 为什么第二个代码片段中的 css 需要大括号 大括号是一种特殊的语法 让 JSX 解析器知道它需要将它们之间的内容解释为
  • Javascript 警报和 php 标头

    我遇到了一个小问题 当我得到没有标题的 PHP 脚本时 一切都很好 我收到了 javascript 警报框 但是当我在警报之前使用标题时它不起作用 它按应有的方式重定向我 但没有显示任何框 有人可以帮助我吗 if pkt lt 1 OR u
  • C/C++ 中的任意大小整数

    Question 有没有办法使用 c c 创建任意大小的整数 例如 int main void Int i Int 3 3 bit integer i 1 Represented as 001 Bonus 有没有办法对浮动值执行相同的操作
  • @AppStorage 变量上出现“调用初始化程序时没有完全匹配”错误?

    我收到以下错误 No exact matches in call to initializer on my 应用存储下面的变量 模型 swift class UserSettings ObservableObject AppStorage
  • 如何在 php 中组合 2 个关联数组,以便在所有情况下都不会覆盖任何重复的条目?

    我有两个关联数组 它们有许多相同的内容 所以我想以这样的方式组合这两个数组 如果我有a在数组 1 和a在数组 2 中比在数组 3 中我应该有两个条目a s而不是 1 我尝试过使用 array merge 但如果第二个数组中有任何重复项 它会
  • rmagick 有没有办法转换内存中的图像

    From Rmagick guide 将图像转换为另一种格式 将图像转换为另一种格式就像编写 图像到文件 ImageMagick 使用输出文件名suffix jpg for JPEG gif for GIF for example or p
  • 在 shell 中一行运行多个命令

    说我有一个文件 templates apple我想要 把它放在两个不同的地方 然后 删除原件 So templates apple将被复制到 templates used AND templates inuse然后我想删除原来的 Is cp
  • gdb 中的 是否有问题?

    我有一个仅在 O2 优化中崩溃的应用程序 使用 gcc 4 2 4 编译 当我单步执行代码并到达崩溃的位置并尝试检查该值时 我在 gdb 中得到了 优化后的值 我在互联网上读到这意味着该值存储在寄存器中 我想知道我的崩溃是否可能与某些信息放
  • 您应该能够分配多少内存?

    背景 我正在编写一个处理大量地理数据的 C 程序 并希望一次性加载大块进行处理 我只能使用为 32 位机器编译的应用程序 我正在测试的机器运行 64 位操作系统 Windows 7 并拥有 6 GB 内存 使用 MS VS 2008 我有以
  • JSON 文件 - Java:编辑/更新字段值

    我的工作流程中有一些 JSONObject 并且通过将它们写入 json 文件来存储相同的 JSONObject 我想要一种有效的方法来更新 json 文件 仅在需要的字段 包含较新的 JSONObjects 实例的内容 Eg 我的档案里有
  • Java中InputStream.available()有什么作用?

    什么是InputStream available do in Java 我阅读了文档 但仍然无法理解 医生说 返回可以从此输入流读取 或跳过 的字节数 而不会被该输入流的方法的下一个调用者阻塞 下一个调用者可能是同一个线程或另一个线程 In
  • 地图在 python 3 中无法按预期工作

    这里是新手 此代码在 python 2 7 中有效 但在 3 3 中无效 def extractFromZipFiles zipFiles files toPath extractFunction lambda fileName zipFi
  • PHP 添加 2 个小数点数字(金钱)会得到错误的总金额结果

    我的 MySQL 数据库中有一个客户发票表 其中有一个名为 价格 的 DECIMAL 10 2 字段 当在 php 中获取这些值并计算总金额时 例如 在脚本中 totalAmount 0 initialised them to while