我想实现一个函数round(num, min, max)
,它将浮点值舍入到至少min
小数位,最多max
。我想要一个字符串。我有一些有用的东西,但它的长度惊人地长。你能写出比我更像Python的作品吗?在
使用
round(3.14159, 2, 4) --> '3.1416'
round(3.14159, 0, 2) --> '3.14'
round(3.14159, 0, 1) --> '3.1'
round(3.14159, 0, 0) --> '3'
round(3.14159, 4, 6) --> '3.141590'
round(3.14, 4, 6) --> '3.1400'
round(3, 4, 6) --> '3.0000'
我想你明白了。这是我得到的。在
^{pr2}$
只是一些小的改进,但保留了基本思想(转换值、去掉零、去掉小数点)。在
第一个更改是避免与内置函数
min
和max
的名称冲突。我认为,使用为特定目的而设计的函数(str.format
用于值格式化,str.rstrip
用于从右剥离,str.endswith
用于测试最后一个字符)会使它更像python。在您将浮点舍入与打印格式混淆。*
浮点数
3.14
与3.1415
不同。所以把3.1415
取整为2位数是有意义的。在但是浮点数
3.00
与3.0
完全相同。所以把3.0
四舍五入到2位数是没有用的;它仍然会是你开始时做的同样的事情。在同时,如果您想更改数字的打印方式,可以使用
format
函数、str.format
方法、f-strings、%
格式等进行更改。例如:有关如何使用f字符串的详细信息,请参见Format Specification Mini-Language(以及}-Style String Formatting ,以了解如何使用
str.format
和format
),以及^{%
。在或者通过一个子链来保持精度。如果这就是您所追求的,float不能做到这一点,但是
decimal.Decimal
可以,所以您可能需要看看decimal
模块。但我认为这不是你想要的。相关问题 更多 >
编程相关推荐