python - python数学结果与python结果和计算器不同
问题描述
为什么一个简单的 python 计算给出的结果与 PHP 或袖珍计算器中的相同计算不同?
tmp = (50.73 / 120) * 20
在 python3 中,tmp 现在8.45499999999
在 php 和它导致的其他计算器中8.455
(没有任何手动舍入)
我的问题是我需要用 2 个小数点对 tmp 变量进行舍入(商业舍入),这导致 python38.45
不正确。商业四舍五入8.455
将是8.46
解决方案
请使用decimal.Decimal
,而不是float
:
from decimal import Decimal
Decimal("50.73") / Decimal(120) * Decimal(20)
如果50.73
不是您输入的值,请decimal.Decimal
用于计算它。如果它是您从某个地方输入的数字,只需在创建小数点之前将其转换为 int 字符串,因为这Decimal(50.73)
会出现与浮点数相同的问题。
推荐阅读
- android - 处理 Rx 中的错误
- c# - .NET Core 2.1 / Angular - SignalR 只需 2 分钟即可连接到集线器
- javascript - 使用 Gmail API 发送带有附件 (PDF) 的邮件
- vue.js - Vuex 操作返回 undefined 和 null
- c# - Unity3d使用列表保持玩家在竞赛游戏中的位置
- mysql - MySQL 条件引用外键
- mysql - mysql查询显示组数据
- ruby - 安装 Ruby 时出错
- c# - c# linq MethodCallExpression for Max(DataRow) used for .GroupedBy().Select()
- mysql - 如何在MYSQL查询中匹配精确值