零基础学编程009:只显示2位小数

我们仍要继续解决这个问题:如何用Python打印这篇枯燥的《复利数据表》?

(1+0.01) ^ 1 = 1.01 (1+0.01) ^ 2 = 1.02 (1+0.01) ^ 3 = 1.03 ... ... (1+0.01) ^ 364 = 37.41 (1+0.01) ^ 365 = 37.78

学完《零基础学编程007:FOR循环》之后,我们已经可以输出这样五行数据:

(1+0.01) ^ 361 = 36.30913774096189 (1+0.01) ^ 362 = 36.672229118371504 (1+0.01) ^ 363 = 37.03895140955522 (1+0.01) ^ 364 = 37.409340923650774 (1+0.01) ^ 365 = 37.78343433288728

但有一个明显的问题,电脑计算得太太太精确了,每个数后面都拖着10多位的小数,而我们只要两位小数就够了,怎么办呢?

编程新手到这里可能就束手无策了,此时《“零基础学编程”都需要哪些基础?》里提到的2项技能就要发挥作用了。

1)英语基础

一种容易想到的办法是对第3位的小数部分进行四舍五入的运算,在英语里四舍五入叫round,小数在计算机的世界里经常被称为浮点数float。

2)搜索技能

现在需要google出场了,输入关键词“python round float”:

如果没有vpn,只能用某度试试了,你自己对比一下搜索结果吧。点击文末的“阅读原文”到stackoverflow上看看那篇排在第一位的详细答案有多详细吧,纯英文的。

3)立即到python 的IDLE中试试:

>>> round(36.30913774096189, 2) 36.31 >>> round(36.672229118371504, 2) 36.67

效果不错,大概意思很容易猜出来,round(x, 2)就是把x这个数保留两位小数。

4)把第7课《零基础学编程007:FOR循环》的代码抄过来,稍加修改,在python IDLE环境中执行一下,看看效果:

for i in [361,362,363,364,365] :
    print( "(1+0.01) ^", i, "=", round(1.01**i, 2) )

小结:

1)英语基础好绝对大有帮助

2)会用搜索,能够快速定位到有用的资源,节省大量的时间

3)立即在python IDLE中尝试,帮助快速理解代码的作用

4)知道了round(x, 2)函数的意思

5)多看看资料,实际上round(x)就是四舍五入的取整

6)联系到电子表格EXCEL,你也用过ROUND(x)函数吧?道理都是一样的,许多编程语言中的取整函数都叫round

7)在stackoverflow的原文中还提到了另一种更为通用的解决办法,是用format函数,这里先不介绍了

--- END ---

原文发布于微信公众号 - 申龙斌的程序人生(slbGTD)

原文发表时间:2017-01-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏撸码那些事

【抽象那些事】 命令式抽象

这种坏味是由操作转换为类引起的,表现为类中只定义了一个方法,有时候类名和方法名相同。这种坏味还常常表现为方法操作的数据位于另一个类中。

3578
来自专栏Java面试通关手册

一份送给Java初学者的指南

我自己总结的Java学习的系统知识点以及面试问题,目前已经开源,会一直完善下去,欢迎建议和指导欢迎Star: https://github.com/Snailc...

1313
来自专栏腾讯移动品质中心TMQ的专栏

小说书架内容质量自动化测试

一.项目背景 小说书架的产品思路是:在手机QQ浏览器这个平台上,给用户提供一个小说书架这样的小说阅读入口。通过这个入口阅读到的小说,是后台将从其它网页中抽取到...

2125
来自专栏Java技术

开发中我们需要遵循的几个设计原则!

在软件开发中,前人对软件系统的设计和开发总结了一些原则和模式, 不管用什么语言做开发,都将对我们系统设计和开发提供指导意义。本文主要将总结这些常见的原则和具体阐...

902
来自专栏Android机动车

Java 基础(一)——重新理解面向对象

如何利用对象完成真正有用的工作呢?必须有一种办法能向对象发出请求,令其做一些实际的事情。接口就是对一个对象的行为进行规范,使对象具有做某些事情的能力。

661
来自专栏码农阿宇

设计模式快速学习(一)

UML类图 ? 简单工厂模式 1.1类图 ? 策略模式 2.1策略模式结构图 ? 2.2策略模式解析 策略模式时一种定义一系列算法的方法,从概念上看,所有这...

2493
来自专栏IMWeb前端团队

写给前端专家的一封公开信:关于分号(翻译)

本文作者:IMWeb frankfang 原文出处:IMWeb社区 未经同意,禁止转载 原文 Sean Silva 给我发来一封信: 我最近在浏览你...

1897
来自专栏一个会写诗的程序员的博客

函数式编程与面向对象编程[2]: 静态类型语言的表达力 静态类型语言与动态类型语言函数式编程与面向对象编程[2]: 静态类型语言的表达力 静态类型语言与动态类型语言

像Java或者C#这样强类型的准静态语言在实现复杂的业务逻辑、开发大型商业系统、以及那些生命周期很长的应用中也有着非常强的优势

741
来自专栏一个会写诗的程序员的博客

第1章 JVM语言家族概览

所谓编程语言只是一个抽象的规范,而编译器是这个规范的实现,它是在这个规范的严格定义下被实现的.

1483
来自专栏程序人生

重构:撰写合格的代码

在「代码重构之道」里,我犯了个懒,讨论了什么情况下需要考虑重构,以及工具和方法来促进重构,但对如何重构代码本身,或者说:如何把烂代码转化成好代码,或者至少是合格...

3538

扫码关注云+社区