2016-12-31 7 views
0

小売監査の計算のコードのほんの一部で、私は小売価値の入力を許可し、最大2つの入力量を掛けようとしています。 )結果は$ X * Y = $ Zです。Python Math - 財務的な出力を伴う浮動小数点が正しく出力されない

私はコードを修正しようとしましたが、この数式がどのように正しく動作しているかに固執しているようです。

私はコード内の多数の異なる構成を試みたと私が達成した最もは以下の通りです:

#Retail value of item, whole number (i.e. $49.99 entered as 4999) 
rtlVAL = input("Retail Value: ") 

#Quantity of Items - can be multiplied for full stack items, default if no entry is '1' 
qt1 = float(input("Quantity 1: ")) #ex. 4 
qt2 = float(input("Quantity 2: ") or "1") #ex " " 

#Convert the Retail Value to finacial format (i.e 4999 to $49.99) 
rtl = float("{:.2}".format (rtlVAL)) 

# Screen Output 
qtyVAL = int(qt1)*int(qt2) 
print("$" + str(qtyVAL*rtl)) 

入力された値は次のとおりです。 小売りの価値:4999 数量1:4 数量2:(ブランク)

期待性能である4999 * 4 *および予想結果(1の値にない項目のデフォルトため)である$ 199.96

このコードの結果は$ 196.0あり、そうではないだけで、それは間違った結論ですが、それは小数点以下を逃しです。

私は、数学がなぜ文脈上の間違いになるのか、完全には分からない。

私はここで何が欠けていますか? 9行目


、私は次のことを試してみた:

rtl = float("{:.2f}".format (rtlVAL))

rtl = int("{:.2f}".format (rtlVAL))

私はライン13を変更した場合のリターンは

ValueError: Unknown format code 'f' for object of type 'str'

た:

print("$" + float(qtyVAL*rtl)) 

私はとValueError戻ります後者と一緒に前に変更のいずれかを使用して

TypeError: must be str, not float

取得:


のPython 3.4と3.6

私は検索しましたがPython、数学、浮動小数点数、フォーマットに関するいくつかの他の質問がありますが、質問はlookiこれよりはるかに進歩して絡み合ったものを提示していましたので、私はコンテキストアプリケーションを作るための答えを集めることができませんでした。あるいは、raw input()などのコードの一部が単にinput()であり、int(input()) Python 3.xをstrの値から抜け出す(この目的のために私が理解する限り)。

私はこれを重複して見たことはありませんでしたが、私が謝罪したことを忘れた場合、それは意図的ではありません。

答えて

1

周りの番号形式と混乱する必要はありません:

rtl = float(rtlVAL)/100 

ちょうどドルの値を取得するために100で小売値を分割

EDIT:

ところで、その理由は、それが来てましたあなたの数字のフォーマットは、あなたのケースではrtlVAL - 49の最初の2桁を取っていて、それを乗算していたからです。

+0

ありがとうございます。私は196年に評価された理由を疑問に思って、あなたが答えたときにそれを検討していました。 数字の書式が正しいことを確認して、もっと明白な解決策を見逃してしまったと思います。 –

+0

私は昨日、なぜ、私の変数 'requirement'が' null'を返すのかを試してみるのに2時間ぐらい過ごしました。私は宣言していたことが「必要条件」であることが判明しました。あなたがそれをするまで、あなたは愚かさを感じることができません。お役に立てて嬉しいです。 – MrB

+0

は、私がVBAとExcelで持っていたいくつかのエピソードのように聞こえる。私はそれが私たちすべてに起こると思います。 –

関連する問題