返回顶部
首页 > 资讯 > 后端开发 > Python >详解Python中的数据精度问题
  • 634
分享到

详解Python中的数据精度问题

2024-04-02 19:04:59 634人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录一、python运算时精度问题1.运行时精度问题2.解决方案:添加方法二、Python四舍五入时精度问题1.使用round与浮点数格式化时候的精度问题 2.解决方案,使

一、python运算时精度问题

1.运行时精度问题

在Python中(其他语言中也存在这个问题,这是计算机采用二进制导致的),有时候由于二进制和十进制之间对应问题会导致数值的精度问题,比如无法用有限个二进制位完整地表示0.1,因为0.1转化为二进制之后位一个无限循环小数

print(1.1*2.2)

查看运行结果:

2.解决方案:添加方法

需要将整数部分与小数部分单独做处理可以解决

def multiple(m1, m2):
    r=''
    ## 若存在浮点型,则先转化为整数
    if type( m1 )==float or type( m2 )==float:
        print( "存在浮点数" )
        len_m1=len( str( m1 ).split( "." )[1] )
        len_m2=len( str( m2 ).split( "." )[1] )
        print( "m1的小数位:", len_m1 )
        print( "m2的小数位:", len_m2 )

        m1=int( 10**len_m1*m1 )
        m2=int( 10**len_m2*m2 )
        print( "m1化为整数:", m1 )
        print( "m2化为整数:", m2 )
        r=str( m1*m2 )
        print( "r:", r )

        l=len_m1+len_m2
        print( "l的总长度:", l )
        if l<len( r ):
            r_front=r[:-l]
            r_last=r[-l:]
            print( r_front, "-", r_last )
            r=r_front+"."+r_last
        else:
            r="0."+(l-len( r ))*"0"+r

    else:
        print( "不存在浮点数" )
        r=m1*m2
    return r

res = multiple(1.1,2.2)
print(res)

查看运行结果:

二、python四舍五入时精度问题

1.使用round与浮点数格式化时候的精度问题

归根结底是计算机存储浮点数的问题

a1 = 0.235
a2 = round(a1,2)
a3 = '%.2f' % a1
print(a2)
print(a3)

查看运行结果:

 2.解决方案,使用Decimal函数

需要将float转换为Decimal,该类可以通过接受字符串(务必是字符串)形式的浮点数实现相对精确的小数计算(减缓了精度误差,但没有消灭)

from decimal import Decimal

a1 = 0.235
a2 = Decimal(str(a1)).quantize(Decimal("0.00"))
a3 = '{:.2f}'.fORMat(Decimal(str(a1)))
print(a2)
print(a3)

查看运行结果:

到此这篇关于详解Python中的数据精度问题的文章就介绍到这了,更多相关Python数据精度问题内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 详解Python中的数据精度问题

本文链接: https://lsjlt.com/news/120730.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 详解Python中的数据精度问题
    目录一、python运算时精度问题1.运行时精度问题2.解决方案:添加方法二、python四舍五入时精度问题1.使用round与浮点数格式化时候的精度问题 2.解决方案,使...
    99+
    2024-04-02
  • 详解java中BigDecimal精度问题
    目录一、背景二、BigDecimal构造函数1、四种构造函数2、为什么会出现这种情况3、如何解决三、常用方法1、常用方法2、取舍规则四、格式化一、背景 在实际开发中,对于 不需要任何...
    99+
    2024-04-02
  • Python中的浮点数计算精度问题是如何解决的?
    Python中的浮点数计算精度问题是如何解决的?在计算机科学中,浮点数计算精度问题是常见的挑战之一。由于计算机内部使用有限的比特位来表示浮点数,所以对于某些小数的表示和运算时,可能会出现精度损失的情况。Python作为一门强大的编程语言,提...
    99+
    2023-10-22
    解决 浮点数 精度
  • 处理 Golang 中的数值精度问题
    Golang 中的精度丢失现象及处理策略 在使用编程语言 Golang 进行数值计算时,我们常常会遇到精度丢失的问题。这种问题可能会导致计算结果不准确,影响程序运行的正确性。本文将探讨...
    99+
    2024-02-25
    golang 处理策略 精度丢失
  • python浮点数运算精度问题如何解决
    在Python中,浮点数运算可能存在精度问题,可以采取以下方法解决:1. 使用Decimal模块:Decimal模块提供了精确的十进...
    99+
    2023-08-26
    python
  • JS中toFixed()方法四舍五入的精度问题详解
    目录踩的坑 填坑方法 什么样的坑? 总结踩的坑 最近工作中,在计算一个商品的折扣价格,有时候总是出现价格会有一分钱的差异,涉及钱的问题都是比较敏感的,经过排查,最后发现竟然是 JS...
    99+
    2024-04-02
  • java中的BigDecimal精度问题怎么解决
    在Java中,可以使用BigDecimal类来解决精度问题。BigDecimal类提供了高精度的数值计算,可以避免浮点数计算精度丢失...
    99+
    2023-08-16
    java BigDecimal
  • 解决java.sql.Timestamp丢失精度的问题
    目录java.sql.Timestamp丢失精度需要重新补偿java.sql.Timestamp类的使用1. 获取当前时间2.String类型转换为Timestamp3.Timest...
    99+
    2024-04-02
  • C语言中浮点数的精度丢失问题解决
    目录一 先来看一段代码运行结果:二 如何解决(1)浮点数的大小比较(2)含浮点数的表达式和0.0的比较总结一 先来看一段代码 #include<stdio.h> int ...
    99+
    2024-04-02
  • 分析和解决 Golang 中数值精度丢失的问题
    Golang 精度丢失问题分析与解决方法 在使用 Golang 编程语言进行数学运算时,一些情况下会遇到精度丢失的问题。这种问题通常发生在浮点数运算中,特别是涉及到大数值、小数值或者需...
    99+
    2024-02-24
    golang 解决方法 精度问题 标准库
  • Java中求Logn/log2 的精度问题
    目录java求Logn/log2精度例如程序如下:java 处理高精度计算使用的BigDecimal类的时候需要注意的地方:java求Logn/log2精度 经过本人测试,java ...
    99+
    2024-04-02
  • java精度问题怎么解决
    在Java中,处理浮点数的精度问题可以使用BigDecimal类来解决。BigDecimal类提供了精确的数值计算,可以避免浮点数的...
    99+
    2023-08-16
    java
  • JS超出精度数字问题的解决方法
    精度问题最通俗易懂的解释 比如一个数 1÷3=0.33333333...... 大家都知道3会一直无限循环,数学可以表示,但是计算机要存储,方便下次取出来再使用,但0.333333...
    99+
    2024-04-02
  • JS如何解决超出精度数字的问题
    这篇文章主要为大家展示了“JS如何解决超出精度数字的问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JS如何解决超出精度数字的问题”这篇文章吧。精度问题最通俗易懂的解释比如一个数 1÷3=0....
    99+
    2023-06-20
  • 解决Python访问MySQL数据库速度慢的问题
    这两天写了个作业,关于学生选课系统的,随后完成后也会发布到我的博客里面。室友的访问速度几乎是毫秒级,而我的起码要等上四五秒钟。 我总结的影响访问速度的原因主要有以下几种: 主机名 重复开、关数据库 后台数据库中的数据...
    99+
    2022-05-29
    Python MySQL 数据库速度慢
  • ES业务数据迁移遇到的精度问题BUG
    目录前言01 问题发现过程02 问题的根因是什么03 类似的问题有哪些千年虫问题:2038 年问题:04 小结前言 最近在协助团队完成 ES 数据的切换(业务数据迁移),过程中遇到一...
    99+
    2024-04-02
  • JS中浮点数精度问题的分析与解决方法
    目录前言问题的发现浮点数运算后的精度问题toFixed奇葩问题为什么会产生浮点数的存储浮点数的运算解决方法解决toFixed解决浮点数运算精度附:JS浮点数精度问题的一些实用建议总结...
    99+
    2024-04-02
  • java中计算缺失精度的问题
    Java中计算会缺失精度的主要原因是浮点数的精度问题和整数溢出问题。 浮点数的精度 Java中的浮点数类型为float和double,它们采用的是IEEE 754规范的浮点数编码,这种编码方式虽然能够表示大范围的实数,但存在一定的精度损失。...
    99+
    2023-09-16
    java jvm 开发语言
  • springboot Long 精度丢失问题解决
    目录前言解决方法基于注解@JsonSerialize(不推荐)基于jackson全局配置(不推荐)使用JsonComponent 序列化配置WebMvcConfigurationSu...
    99+
    2024-04-02
  • python调用dll出现精度问题如何解决
    本文小编为大家详细介绍“python调用dll出现精度问题如何解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“python调用dll出现精度问题如何解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。遇到的问题...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作