将浮点数转换为整数而不四舍五入小数点

Turning a float into an integer without rounding the decimal points

我有一个函数可以生成伪随机浮点数,我想把它们变成整数, 但我并不是要将它们四舍五入。 例如,如果输入是:

1.5323665

那么我希望输出为:

15323665

而不是 21,这是你用 round() 和 int() 得到的结果。

将其转换为字符串并删除一个点:

int(str(x).replace('.', ''))

您可以先将浮点数转换为字符串,然后去除小数点并将其转换回 int:

x = 1.5323665
n = int(str(x).replace(".", ""))

但是,这不适用于字符串表示默认为科学记数法的大数字。在这种情况下,您可以使用字符串格式:

n = int(f"{x:f}".replace(".", ""))

这最多只能保留 6 位小数,对于更大的数字,您必须使用 {number: .p} 语法自行决定精度,其中 p 是精度:

n = int(f"{1.234567891:.10f}".replace(".", ""))

x = 1.5323665
y= int (x)
z= str(x-y)[2:]
o = int(len(z))
print(int(x*10**o))

会return15323665

而不是创建你自己的伪随机引擎,它几乎肯定不会有好的 density distribution,特别是如果你以这种方式将浮点数强制转换为整数,强烈考虑使用内置库来满足你的范围正在寻找!

更具体地说,如果您没有良好的分布,您的数据可能会出现极端或无法解释的偏差(尤其是 值趋向于某个共同值)

如果您绘制数据图表,您可能能够观察到这一点,这可能是理解它的好方法!

查看内置 random 库,它提供了一个整数范围函数以方便您使用

https://docs.python.org/3/library/random.html#random.randint

import random
result = random.randint(lowest_int, highest_int)