python怎么输出浮点数啊

imarshal 2017-02-07 03:52:57
比如math.pi,调试时查看的话是3.141592653589793

但用print直接输出或者用'%f'的话只显示前面几位,而用'%.30f'的话,后面多余的位数不补充0,而是一些奇怪的数字
...全文
7652 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wanghongli007 2019-10-10
  • 打赏
  • 举报
回复
混沌鳄鱼 2017-02-07
  • 打赏
  • 举报
回复
实数是无限多的,无法在计算机中用有限位二进制精确表示的,所以都是某种舍位的近似值。 python中的float类型相当于其它程序语言中的双精度类型,比如C语言中的Double。 双精度浮点数(double)是计算机使用的一种数据类型,使用 64 位(8字节) 来存储一个浮点数。 IEEE 双精度格式由三个字段组成:52 位小数 f ; 11 位偏置指数 e ;以及 1 位符号s。 它可以表示十进制的15或16位有效数字,其可以表示的数字的绝对值范围大约是:4.9x10-324 ~ 1.7x10308。IEEE754为其定制标准。 这就是为什么你看到 3.141592653589793 正好16位有效数字之后是一些奇怪数字的原因。 楼主自己百度一下 浮点数的表示及范围 IEEE754
imarshal 2017-02-07
  • 打赏
  • 举报
回复
引用 10 楼 u012536120 的回复:
我没有遇到这种问题耶

>>> fl=99999.999999999
>>> fl
99999.999999999
>>> str(fl)
'99999.999999999'
你看看这个 python float类型转string类型,要求精度不能丢失!!!
我知道了,不能用str,要用repr
sanGuo_uu 2017-02-07
  • 打赏
  • 举报
回复
我没有遇到这种问题耶

>>> fl=99999.999999999
>>> fl
99999.999999999
>>> str(fl)
'99999.999999999'
你看看这个 python float类型转string类型,要求精度不能丢失!!!
imarshal 2017-02-07
  • 打赏
  • 举报
回复
引用 8 楼 u012536120 的回复:
[quote=引用 7 楼 imarshal 的回复:] 直接用str不对,会自动截取double的位数
Python 支持多种数字类型:整型、长整型、布尔型、双精度浮点型、十进制浮点型和复数。 int long boolean float decimal ? 没有double[/quote] 对,python中是float,64位,和其他语言的double一样,怎么能不截取位数转换为字符串啊
sanGuo_uu 2017-02-07
  • 打赏
  • 举报
回复
引用 7 楼 imarshal 的回复:
直接用str不对,会自动截取double的位数
Python 支持多种数字类型:整型、长整型、布尔型、双精度浮点型、十进制浮点型和复数。 int long boolean float decimal ? 没有double
imarshal 2017-02-07
  • 打赏
  • 举报
回复
直接用str不对,会自动截取double的位数
imarshal 2017-02-07
  • 打赏
  • 举报
回复
引用 5 楼 u012536120 的回复:
人家就是不一样的,你能怎么办呢 算算Python的math.pi的精度
引用 4 楼 imarshal 的回复:
那python有没有toString之类的啊,就是把double转换成str
sanGuo_uu 2017-02-07
  • 打赏
  • 举报
回复
人家就是不一样的,你能怎么办呢 算算Python的math.pi的精度
引用 4 楼 imarshal 的回复:
imarshal 2017-02-07
  • 打赏
  • 举报
回复
引用 3 楼 u012536120 的回复:
什么奇怪的数字?
>>> import math
>>> math.pi
3.141592653589793
>>> '%f'%math.pi
'3.141593'
>>> '%.30f'%math.pi
'3.141592653589793115997963468544'
>>> print '%.30f'%math.pi
3.141592653589793115997963468544
793后面都是奇怪的数字,完全不对的,不知道怎么来的
sanGuo_uu 2017-02-07
  • 打赏
  • 举报
回复
什么奇怪的数字?
>>> import math
>>> math.pi
3.141592653589793
>>> '%f'%math.pi
'3.141593'
>>> '%.30f'%math.pi
'3.141592653589793115997963468544'
>>> print '%.30f'%math.pi
3.141592653589793115997963468544
imarshal 2017-02-07
  • 打赏
  • 举报
回复
引用 1 楼 IamNieo 的回复:
what you想干嘛 pi怎么会有多余的位数呢 如果只显示3位,那么就%.3f
是输出30位,c/c++还有java后面多余的位是补充0,python怎么是一些奇怪的数字啊
nieoding 2017-02-07
  • 打赏
  • 举报
回复
what you想干嘛 pi怎么会有多余的位数呢 如果只显示3位,那么就%.3f

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧