在进行浮点数计算时它们无法精确表达出所有的十进制小数位。

a = 4.1

b = 5.329

print(a+b)

9.428999999999998

这些误差实际上是底层CPU的浮点运算单元和IEEE754浮点数算数标准的一种“特性”。python的浮点数类型保存的数据采用的是原始表示形式,因此使用float实例时就不能避免这样的误差。

我们可以使用decimal模块避免这种操作(如果不介意牺牲下性能):

from decimal import Decimal

a = Decimal('4.1')

b = Decimal('5.329')

print(a+b)

9.429

注意Decimal的参数必须是字符串,不能是浮点型,否则误差依旧存在。

decimal模块的主要功能是允许控制计算过程中的各个方面,包括数字的尾数和四舍五入。

from decimal import Decimal

from decimal import localcontext

a = Decimal(4.1)

b = Decimal(5.329)

print(a/b)

print('================')

with localcontext() as ctx:

ctx.prec = 3

print(a/b)

0.7693751172827922400071261708

================

0.769

getcontext也可以实现和localcontext一样的功能

from decimal import Decimal, getcontext

a = Decimal(4.1)

b = Decimal(5.329)

getcontext().prec = 3

print(a/b)

0.769

误差我们不能完全消除,我们只能尽力优化算法,使得误差尽可能小。在大数和小数相加时要格外注意。

nums = [3.21e+18, 1, -3.21e+18]

print(sum(nums))

print('=========================')

import math

res = math.fsum(nums)

print(res)

0.0

=========================

1.0

以上这篇python执行精确的小数计算方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

python精确小数点_python执行精确的小数计算方法相关推荐

  1. python精确运算_Python:执行精确的浮点数运算

    需要对浮点数执行精确的计算操作,并且不希望有任何小误差的出现. 浮点数的一个普遍问题是它们并不能精确的表示十进制数.并且,即使是最简单的 数学运算也会产生小的误差,比如: >>> a ...

  2. python计算小数_python执行精确的小数计算方法

    在进行浮点数计算时它们无法精确表达出所有的十进制小数位. a = 4.1 b = 5.329 print(a+b) 9.428999999999998 这些误差实际上是底层cpu的浮点运算单元和iee ...

  3. python完全匹配_python如何精确匹配

    各位大虾好! 小弟有一个文件里面是这个样子:data_center = { access_key = { ak = "this is ak", sk = "this is ...

  4. python子进程通信_python执行子进程实现进程间通信的方法

    本文实例讲述了python执行子进程实现进程间通信的方法.分享给大家供大家参考.具体实现方法如下: a.py: import subprocess, time subproc = subprocess ...

  5. python调用系统_python 执行系统命令

    Python中执行系统命令常见的几种方法: (1)os.system # 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息 # 如果再命令行下执行,结果直接打印出来 例如: >> ...

  6. python terminal调试_python执行命令行调试工具pdb

    调试 pdb pdb是基于命令行的调试工具,非常类似gnu的gdb(调试c/c++). 命令简写命令作用 break b 设置断点(用法,b :在第数字行设置断点................... ...

  7. python运行命令_Python执行系统命令教程

    一.背景说明 以前就感觉进步的速度和博客的数量成正比,所以很长一段时间内想不通为什么很多博客为什么到最后很少甚至不在更新了,直到最近自己也快成为断更的一员. 这段时间其实碰到和解决了挺多典型的问题,但 ...

  8. python多进程怎么样_Python执行多进程任务的方法

    Python的多进程可以借助from multiprocessing import Pool来实现. 简而言之分为这样几步: 导入包from multiprocessing import Pool 编 ...

  9. python浮点数怎么运算_Python如何执行精确的浮点数运算

    问题 你需要对浮点数执行精确的计算操作,并且不希望有任何小误差的出现. 解决方案 浮点数的一个普遍问题是它们并不能精确的表示十进制数. 并且,即使是最简单的数学运算也会产生小的误差,比如: >& ...

最新文章

  1. HP小型机superdome配置MC双机、PV、VG、LV初体验
  2. 064_let关键字
  3. 前端学习(586):在元素中动态添加类与伪类
  4. 信息学奥赛一本通(1012:计算多项式的值)
  5. oracle日期修改格式化,oracle日期格式化的实现
  6. 计算机组成与设计英文版在线,计算机组成与设计(硬件软件接口英文版原书第5版RISC-V版)/经典原版书库...
  7. python从入门到_Python学习路线从入门到上手,如何快速Python学习?
  8. 在ASP.NET MVC应用程序中随机获取一个字符串
  9. 蓝桥杯 Java B组省赛真题【2017】
  10. numpy下载失败解决方法
  11. android audiomixer,Android多媒体:AudioMixer
  12. 计算机应届博士生的一点求职经验——概述篇
  13. python爬取苏宁易购--jsonpath方法
  14. 苹果手机相机九宫格怎么设置_瞧不起iPhone相机?苹果手机5个逆天拍照功能,效果惊艳堪比单反...
  15. 程序员这条路,选择深耕技术,还是全面学习比较好?
  16. 架构设计:负载均衡层设计方案(8)——负载均衡层总结上篇
  17. Flutter 淘宝 App,支持 iOS、Android
  18. 麻将牌识别算法AI也能打麻将了只赢钱
  19. 《VS面向对象及可视化设计 》文本操作实例5-1
  20. Python 打造基于百度翻译的命令行翻译工具

热门文章

  1. R语言四格表的统计分析及假设检验
  2. 你正在使用GPU进行CNN类模型训练,突然发生了内存溢出的错误,你可以通过哪些方式来进行解决?
  3. MySQL数据库have_openss_MySQL 关于OpenSSL证书支持检查方式
  4. oracle 257,ORACLE 10g SYSAUX表空间快速增长之WRH$_ACTIVE_SESSION_HISTORY篇
  5. librosa.stft() 短时傅里叶变换
  6. 【多标签文本分类】Semantic-Unit-Based Dilated Convolution for Multi-Label Text Classification
  7. 车道线检测--Towards End-to-End Lane Detection: an Instance Segmentation Approach
  8. 语义分割--End-to-End Instance Segmentation with Recurrent Attention
  9. LeetCode 319. Bulb Switcher--C++,java,python 1行解法--数学题
  10. 基于Matlab的声波信号处理,基于声卡和Matlab平台的语音信号增强处理系统