将浮点数转换为整数而不四舍五入小数点
Turning a float into an integer without rounding the decimal points
我有一个函数可以生成伪随机浮点数,我想把它们变成整数,
但我并不是要将它们四舍五入。
例如,如果输入是:
1.5323665
那么我希望输出为:
15323665
而不是 2 或 1,这是你用 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)
我有一个函数可以生成伪随机浮点数,我想把它们变成整数, 但我并不是要将它们四舍五入。 例如,如果输入是:
1.5323665
那么我希望输出为:
15323665
而不是 2 或 1,这是你用 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)