如何生成随机浮点数并保留1位小数(含Python 3.4实现)
生成随机浮点数并取整至1位小数(含Python 3.4适配)
嘿,这两个问题其实可以用一套思路搞定,我给你拆解清楚,连Python 3.4的适配也一起覆盖到:
核心步骤:生成随机数 + 小数位处理
不管是哪个Python版本,核心都是先拿到随机浮点数,再对它做1位小数的取整操作。
1. 生成指定范围的随机浮点数
用Python内置的random模块里的uniform()函数就行,它能生成两个数值之间的随机浮点数。比如要生成0到10之间的随机数:
import random # 生成a到b之间的随机浮点数,这里a=0,b=10 random_float = random.uniform(0, 10)
如果只需要0到1之间的随机浮点数,直接用random.random()就可以了。
2. 四舍五入到1位小数
最直接的方法是用内置的round()函数,第二个参数指定要保留的小数位数:
rounded_num = round(random_float, 1)
注意:关于round()的特殊行为
这里要提个容易踩坑的点:Python的round()用的是银行家舍入法——当小数点后第二位刚好是5时,会取最近的偶数。比如:
round(2.35, 1)→ 2.4(因为4是偶数)round(2.25, 1)→ 2.2(因为2是偶数)
如果你的业务场景需要严格的“遇5进1”式四舍五入,可以自己实现一个简单的函数:
def strict_round(num, decimals=1): # 放大10倍后加0.5取整,再缩小回去 return int(num * 10**decimals + 0.5) / 10**decimals
用这个函数替代round()就能得到符合传统四舍五入规则的结果。
Python 3.4 专属说明
不用担心版本兼容问题!Python 3.4已经完全支持random.uniform()和round()函数,上面的所有代码都可以直接在3.4环境里运行。如果你的环境里random模块有什么异常,先确认是不是没正确导入模块哦。
完整示例代码
这里给你一个可直接运行的完整例子:
import random def strict_round(num, decimals=1): return int(num * 10**decimals + 0.5) / 10**decimals # 生成1到100之间的随机浮点数 raw_num = random.uniform(1, 100) # 两种取整方式 default_rounded = round(raw_num, 1) strict_rounded = strict_round(raw_num) print(f"原始随机数:{raw_num}") print(f"默认round处理后:{default_rounded}") print(f"严格四舍五入处理后:{strict_rounded}")
内容的提问来源于stack exchange,提问作者lt468
相关产品推荐
相关产品推荐

