python-3.x - python添加浮点数并保留最大的小数部分
问题描述
在 Python 中,我添加浮点数。
我有数字
client_balance = 40360.7416622703
fund_manager_balance = 676.600516394647
uits= 6.72791159564433
这是我的python代码
def update_client_balance(self, record):
if record.client_id.account_name != ACCOUNT_MANAGER_NAME:
self.client_balance += record.units
def update_manager_balance(self, record):
if record.client_id.account_name == ACCOUNT_MANAGER_NAME:
self.fund_manager_balance += record.units
执行这些功能后,我有
client_balance = 40360.7416622703
fund_manager_balance = 683.328427990291
现在我想手动验证这些函数的结果
所以 (client_balance + fund_manager_balance)(函数执行前) -uits - (client_balance + fund_manager_balance)(函数执行后)
按价值
40360.7416622703 + 676.600516394647 + 6.72791159564433 - (40360.7416622703 + 683.328427990291) = -0.00000000000727595761418343
它应该给我零价值,但它给了我-0.00000000000727595761418343
请帮助我如何解决这个问题?
解决方案
如果您期望绝对没有小数错误,decimal
那么模块适合您。例子:
from decimal import Decimal
client_balance = Decimal('40360.7416622703')
fund_manager_balance = Decimal('676.600516394647')
uits= Decimal('6.72791159564433')
new_client = client_balance # no change according to your code.
new_manager = fund_manager_balance + uits
print(new_client)
print(new_manager)
# validate
err = client_balance + fund_manager_balance + uits - (new_client + new_manager)
print(err)
输出:
40360.7416622703
683.32842799029133
0E-14
注意:对于常量,请在 Decimal 中输入String,因为如果输入 float,则在识别为 float 并更改为 Decimal 之前已经发生错误。
推荐阅读
- php - 如果名称已经出现在数组中,那么 PHP 中是否有一种方法来获取数据,然后内爆两个级别的数组?
- python - 弹出警报 - 搜索循环
- c++ - 如何在 tinkercad 中包含 iostream
- javascript - 如何在根据星级(声誉)过滤用户的反应js中以模式打印星形图标?
- reactjs - 如何在反应打字稿中将 ref 添加到 CSVLINK?
- vue.js - nuxt 项目 (datatable.net) 上的 datatable.js
- angular - 单击表单数组中的一个单选按钮会影响角度 11 中的所有单选按钮
- string - MATLAB:基于字符串名称的 IF 函数
- shell - 如何在詹金斯作业中实时显示在远程服务器上运行的日志
- wordpress - 在 the_content 中显示图片标题