Python~从左到右获取前几个数字

Python~从左到右获取前几个数字,python,python-2.7,Python,Python 2.7,我目前正在编写一个程序,其中包含两个随机变量,需要在一个等式中计算,并希望获取前三个数字并将其转换为一个百分比,以下是我希望该程序回答的内容 formular = (((((3*m-2*h)*g*c*b)/3*m)*o)/lvl)/100 print formular #g and lvl are the random variables 下面是我希望它从公式输出的内容 6920.157 to 69.2 3561.356 to 35.6 182435.24 to 18.2 是否有内置函数允许

我目前正在编写一个程序,其中包含两个随机变量,需要在一个等式中计算,并希望获取前三个数字并将其转换为一个百分比,以下是我希望该程序回答的内容

formular = (((((3*m-2*h)*g*c*b)/3*m)*o)/lvl)/100
print formular
#g and lvl are the random variables
下面是我希望它从公式输出的内容

6920.157 to 69.2
3561.356 to 35.6
182435.24 to 18.2
是否有内置函数允许这样做,或者我可以做什么? 感谢您阅读本文并理解我糟糕的英语(很抱歉)

试试以下方法:

def convert(num):
    while num > 100:
        num /= 10.0;
    return "%.1f" % num
输出:

print(convert(6920.157))  # Prints 69.2
print(convert(3561.356))  # Prints 35.6
print(convert(182435.24)) # Prints 18.2

没有内置的函数,但是通过几个操作就可以很容易地将一些东西串在一起

首先是将数字减少到2个有效数字。您可以使用
log
函数获得有效位数,然后使用幂运算获得幅值。最后用
四舍五入
在整数后加一个小数

digits = int(math.log(formular, 10)) + 1
two_digits = formular / (10 ** (digits - 2))
print round(two_digits, 1)

假设您的输出是a。你可以这样做:

>>> a = 6920.157
>>> float(str(a)[:3])/10
69.2

谢谢你的回答!我试过了,但它说公式没有定义。我必须导入公式还是它只是一个变量?@rcw它只是一个变量,我直接从你的问题中提取。@MarkRandom哦,对了,我使用了一个新文档。。。Sorry如果
a=0.14222222,这将失败。更好地使用:
float(“%s.%s”%”(str(a)[2:2],str(a)[2:3])
谢谢你的回答。但是,当我用小数尝试这个函数时,它返回了ValueError:invalid literal for int(),以10为底:“6920.15”,你还要如何告诉python“.”是小数点?