2.11 类型转换和四舍五入
关键点:如果算术运算符的操作数之一是浮点数,那么结果就是浮点数。
你能否对两个不同类型的数据进行二元运算?答案是肯定的。如果一个整数和一个浮点数同时参与到一个二元运算中,那么Python会自动将整数转化为浮点值。这被称为类型转换。所以34.5和3.04.5是相同的。
有时候,希望获取小数的整数部分。你可以使用int(value)函数来返回一个浮点值的整数部分。例如:
注意:小数部分被舍掉了而没有进位。
你也可以使用round函数对数字进行四舍五入将之转为最近的整数。例如:
我们将在第3章更多地讨论round函数。
注意:函数int和round不会改变要转换的变量。例如:在下面代码中,调用函数后value并没有改变。
注意:函数int也可以用于将整数字符串转换为整数。例如:int("34")返回34。所以,你可以使用函数eval或int将字符串转换为整型。哪个会更好些?int函数完成一个简单的转换。它不能用于非整型字符串。例如:int("3.4")将导致错误。函数eval可以完成比简单转换更多的功能。它可以用于计算表达式。例如:eval("3+4")返回7。然而,使用函数eval有一个微妙的“疑难杂症”。如果数字串前有先导零会使eval函数产生错误。相对地,int函数可以很好地处理这个问题。例如:eval("003")会导致错误,而int("003")会返回3。
程序清单2-6给出一个显示保留小数点后两位的营业税的程序。
程序清单2-6 SalesTax.py
变量purchaseAmount的值是197.55(第2行)。营业税是销售额的6%,所以计算出的tax是11.853(第5行)。注意:
所以,第8行的语句显示保留小数点后两位的税款11.85。
检查点
2.17 当数据从浮点型转化为整型时,小数点后的部分怎么处理?int(value)函数会改变变量value吗?
2.18 下面的语句都正确么?如果是,给出它们的结果。