鱼C论坛

 找回密码
 立即注册
查看: 2456|回复: 5

[已解决]小数点后位数多了为什么会造成错误,求解决方案

[复制链接]
发表于 2017-3-15 22:52:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
下面就是简单的赋值和显示,何以3095后面的数值就会出错,望告知
  1. >>> x=1.4142135623730950488016887242097
  2. >>> print('%.50f'%x)
  3. 1.41421356237309514547462185873882845044136047363281
  4. >>> print('%.23f'%x)
  5. 1.41421356237309514547462
  6. >>>
复制代码
最佳答案
2017-3-15 23:16:24
任何一个不能精确表示的小数在计算机中都是近似值,所以要精确表示的话,只有转换为整数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-3-15 23:12:38 | 显示全部楼层
由于数字在计算机内部的存贮采用2进制,在10进制转换为2进制再转换为10进制时会产生误差。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-15 23:16:24 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
任何一个不能精确表示的小数在计算机中都是近似值,所以要精确表示的话,只有转换为整数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-15 23:37:33 | 显示全部楼层
jerryxjr1220 发表于 2017-3-15 23:16
任何一个不能精确表示的小数在计算机中都是近似值,所以要精确表示的话,只有转换为整数。

这次的欧拉练习题中我尝试的一种方式,你帮我看下:
  1. x=2**0.5
  2. for i in range(18):
  3.     x=1/(x%1)
  4.     print(int(x),end=' ')
复制代码

x=2**0.5时:
  1. RESTART: C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\test.py
  2. 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
复制代码

3时
  1. RESTART: C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\test.py
  2. 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2
复制代码

5的时候就这样了
  1. RESTART: C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\test.py
  2. 4 4 4 4 4 4 4 4 4 4 4 4 2 1 10 2 1 7
复制代码

6时
  1. RESTART: C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\test.py
  2. 2 4 2 4 2 4 2 4 2 4 2 4 2 4 2 2 1 48
复制代码

其实上面就已经基本否认了我这个方式来进行判断是否满足条件的想法了,只是我想知道我这种解法失败的原因是计算机精确度的问题还是算法本身就是错的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-16 06:28:20 From FishC Mobile | 显示全部楼层
余欲渔 发表于 2017-3-15 23:37
这次的欧拉练习题中我尝试的一种方式,你帮我看下:

x=2**0.5时:

计算机精度导致的,你可以参考我的python小练习 精确求解pi的前100位,讨论过这个问题的,也给出了解决方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-17 07:22:41 | 显示全部楼层
python中float 只提供17位的精度,这个可以用 decimal( ) 模块解决误差。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-19 17:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表