当前位置: 首页 > news >正文

round四舍五入在python2与python3版本间区别

round()方法返回数值的小数点四舍五入到n个数字。

语法

以下是round()方法的语法:

round( x ,n)

参数

x --这是一个数值,表示需要格式化的数值

n --这也是一个数值,表示小数点后保留多少位

返回值

该方法返回 数值x 的小数点四舍五入到n个数字

PS: round 对传入的数据进行四舍五入,如果ngigits不传,默认是0(就是说保留整数部分).ngigits<0 的时候是来对整数部分进行四舍五入,返回的结果是浮点数.

例子

下面的例子显示了round()方法的使用

#!/usr/bin/python2
print "round(80.23456, 2) : ", round(80.23456, 2)
print "round(100.000056, 3) : ", round(100.000056, 3)
print "round(-100.000056, 3) : ", round(-100.000056, 3)

当我们运行上面的程序,它会产生以下结果:

round(80.23456, 2) : 80.23
round(100.000056, 3) : 100.0
round(-100.000056, 3) : -100.0

Python3和Python2版本的区别

Python2把x四舍五入为远离0的最近倍数,如round(0.5)=1, round(-0.5)=-1;

Python3则会把x四舍五入为最近的偶数倍数,如round(0.5)=0, round(1.5)=2.0, round(2.5)=2.0

代码:

#!/usr/bin/python2
print round(2.635, 2)
print round(2.645, 2)
print round(2.655, 2)
print round(2.665, 2)
print round(2.675, 2)

输出结果

2.63
2.65
2.65
2.67
2.67

round方法缺陷

通过上面的例子大家可以发现, round的四舍五入方法貌似和我们理解的不太一样, 其实这个不是round的bug, 这个主要来自输入时十进制转换为计算机内部二进制时,且这个问题在有限精度下不可能解决,也不需要解决。

Python 的 decimal 模块可用于解决这一问题。

如果大家不需要四舍五入的话,也可以考虑使用我们最熟悉的print("%.2f" % 2.675)这种方式实现。

相关文章:

  • ubuntu 20.04 安装 huggingface transformers 环境
  • 从零搭建NodeJS项目(小白教程)
  • 2024年阿里云服务器租用费用一年和包月价格表
  • Diddler抓包工具——学习笔记
  • 2. gin中间件注意事项、路由拆分与注册技巧
  • BSD-3-Clause是一种开源软件许可协议
  • 蓝桥杯python常用内置函数
  • 【Web安全】SQL各类注入与绕过
  • 基于神经网络的偏微分方程求解器再度取得突破,北大字节的研究成果入选Nature子刊
  • 实验一:华为VRP系统的基本操作
  • 如何简洁高效的搭建一个SpringCloud2023的maven工程
  • RabbitMQ - 06 - Topic交换机
  • 交易平台开发:构建安全/高效/用户友好的在线交易生态圈
  • 微信小程序uniapp+django+python的酒店民宿预订系统ea9i3
  • 早鸟票最后3天!「黄钊的AI日报·第三季」
  • AWS实战 - 利用IAM对S3做访问控制
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • laravel 用artisan创建自己的模板
  • magento 货币换算
  • Object.assign方法不能实现深复制
  • orm2 中文文档 3.1 模型属性
  • Python_网络编程
  • tab.js分享及浏览器兼容性问题汇总
  • vue 配置sass、scss全局变量
  • yii2权限控制rbac之rule详细讲解
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 每天一个设计模式之命令模式
  • 如何编写一个可升级的智能合约
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 我建了一个叫Hello World的项目
  • 线上 python http server profile 实践
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​什么是bug?bug的源头在哪里?
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (12)Linux 常见的三种进程状态
  • (vue)页面文件上传获取:action地址
  • (补)B+树一些思想
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (已解决)什么是vue导航守卫
  • (转)LINQ之路
  • .jks文件(JAVA KeyStore)
  • .NET 使用 XPath 来读写 XML 文件
  • .net 托管代码与非托管代码
  • .Net 中Partitioner static与dynamic的性能对比
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • @ComponentScan比较
  • @ModelAttribute注解使用
  • @Repository 注解
  • [8481302]博弈论 斯坦福game theory stanford week 1
  • [BZOJ] 1001: [BeiJing2006]狼抓兔子
  • [CF]Codeforces Round #551 (Div. 2)