python中的float类型计算精度不高的问题(已解决)
python,float,类型,计算精度,不高,问题,解决
2025-04-07 09:01:31 时间
大家好,又见面了,我是你们的朋友全栈君。
说的可能比较啰嗦。
在洛谷P2181 对角线 问题中,按照高中所学的组合数可推答案为Cn4(该题题解中有详细过程,这里不多赘述),问题在本文中并不重要。
但题中有一个有意思的点,就是题目的答案是非常大的,用long long都不行,c++中需要用unsigned long long,自然,我就想到python中的int类型范围与内存挂钩,(一般可理解能取到该系统的最大值)
代码如下
m = int(input())
n = int(m*(m-1)/2*(m-2)/3*(m-3)/4)
# 首先大家可以注意一个点,我在这里注意到了要把结果转换为int类型
print(n)
那么大家可以运行一下这个程序,其实如果精度较低的情况下,答案是没有问题的,但是此题正好碰到了它的最高精度,会发现结果相差不多,导致我没有全ac,于是我开始探寻原因 其实我最开始没有主要float类型,直到一个dl告诉我把他改为这样就好
代码如下
m = int(input())
n = m*(m-1)//2*(m-2)//3*(m-3)//4
print(n)
此时,我才想起来python内部将“/”默认为float除法,根据计算机给予的float类型的精度本身就是小于c++中的unsigned long long类型 查阅为2的53次方,自然不满足题意,float就会取一个近似值(这不糊弄人吗?[doge])
上边代码应该时最简单的改法了,但是其实还有一种改法 就是提高精度(利用python中的decimal模块)即可。
代码如下
import decimal
m = decimal.Decimal(int(input()))
n = int(m*(m-1)/2*(m-2)/3*(m-3)/4)
print(n)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/156030.html原文链接:https://javaforall.cn
相关文章
- 用Python实现开心消消乐小游戏
- 分类变量的卡方检验(python实现&SPSS实现)「建议收藏」
- python re.compile() 详解——Python正则表达式「建议收藏」
- Python字符串与时间相互转换
- Python基础14-内置模块
- 慎用!Python 实现微信消息轰炸
- python—pyquery
- 一对兔子从出生后第三个月起每个月_兔子繁衍问题python
- pythonrandom函数用法_python之random模块函数的使用
- python使用RSA加密算法
- Magic * in Python
- 20·Python基础-单例模式四种实现方式
- 超强 Python 数据可视化库,一文全解析
- USB 摄像头 进行python OpenCV 操作的基础设置【以yolo 目标检测为例】
- python十进制转换_Python 进制转换
- 如何给ESP32-CAM编译micropython
- Python版PHP内置的MD5()函数
- 工具推荐|利用python-cdo高效处理气象数据
- SPC(Statistical Process Control 统计过程控制)图——Python+JS实现
- python中删除特定字符串