2017-01-06 5 views
0

私は現在、2つの変数がランダムにあり、式で計算する必要があり、最初の3つの数値をフェッチしてパーセントに変換する必要があるプログラムを作成しています。プログラムに返信したいPython〜左から右に最初の数を取得する

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 

これを可能にするinbuild機能はありますか? が(そのために申し訳ありません)これを読んで、私の悪い英語を理解いただき、ありがとうございます

答えて

0

あなたの出力が。これを行うことができます:

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

これは 'a = 0.14222222222222222'で失敗します:' float( "%s。%s"%(str(a)[:2]、str (a)[2:3]) ' –

0

これを試してみてください:

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 
+0

ありがとうございます。しかし、小数点でこの関数を試してみると、ValueErrorが返されました。基数10のint()のリテラルが無効です: '6920.15'、Pythonに "?"小数点ですか? – rcw

0

そこには作り付けの機能だが、それは文字列何かに簡単ですいくつかの操作と一緒に。

まず、数字を2桁に減らしてください。 log関数で有効桁数を取得し、累乗を使用して大きさを取得できます。 roundで終了し、整数の後に10進数を1つ求めます。

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

ありがとうございました!私はそれを試みたが、それは定式化が定義されていないと述べた。私は公式をインポートする必要がありますか、それとも単なる変数ですか? – rcw

+0

@rcwそれは単なる変数で、私はあなたの質問から直接取った。 –

+0

@マークランダムああ、私は新しい文書を使用しました...ごめんなさい – rcw

関連する問題