本帖最后由 sunrise085 于 2020-10-23 16:46 编辑
感觉好无语哟。自己给自己挖坑,然后还出不来了。。。
你的这些例子中,第三个最简单,最后再说,先说另外三个
在这几个例子中,前面只有一个填位符,而后面俩参数,所以第二个参数 'GB' 根本没用。
前面的填位符中都没有写 f ,所以不把后面的内容当成浮点数,仅仅是当成字符串,点后面的数字就是字符串的长度,但也不是把你所写的这个数字27.888当成字符串,而是把这个原数当成字符串。
第一个和第二个例子,之所以相等,是因为他们就是字符串啊,字符串每个字符一致,那么两个字符串就相等呗
先说第二个例子中,a和b为什么是这么多位。
27.888在python中是多少呢?
可以通过下面这个看看
>>> import decimal
>>> decimal.Decimal(27.888)
Decimal('27.888000000000001676880856393836438655853271484375')
>>>
我们可以看出,他就是你所得到的那个a字符串中的内容。也就是说不管你写88还是888,他只有50位有效数字,因为原数内容就这么多
再说第一个例子,一个写的是6,一个写的是8,但是最后出来的都是五位有效数字 '27.888'。看上面得到的那个27.888的原数,前面几位有数字,从第七位开始为0,一直到第16位都为0,第17位小于5,所以这里你写5~16位得到的结果都一样,都是'27.888'
上面的明白了之后,第四个例子,就好讲了
第四个例子中,前两条,一位或两位有效数字,因为整数部分有两位,就只能写成这种科学计数法了。第三条,三位有效数字,就直接四舍五入了
最后说一下第三个例子。前面也是一个占位符,后面的参数是 '27.888''GB' 这个中间没有逗号,所以这是一个拼接字符串,是一个参数,相当于 '27.888GB'。因为后面的参数就是个字符串,那就简单了前面要几位,就给几个字符,但最多只有八个字符