Skip to content
Tiantan
Articles

ドルからセントに変換する

On 2月 14, 2021 by admin

ラウンド関数を使用してドルからセントに変換しようとしていますが、ラウンド関数には何かがあると思います。 floatからintに100を掛けると、10進数が得られないため、誤解されています。これは問題のコードです

#include <stdio.h> #include <cs50.h> #include <math.h> int main(void) { int owed = 0; printf("Enter the owed amount: "); do { owed = GetFloat(); } while (owed < 0); owed = owed * 100.0; float owe = roundf(owed); owe = (int)owe; 

コメント

  • i wasn '丸める方法がわからないroundf()ではなくround()を使用していたので説明してください

回答

主な問題は、最初に取得した値をどのように保存するかです。 GetFloat()を呼び出し、結果をint型の変数であるowedに格納します。 GetFloat()は浮動小数点数を返します。これは、owedに格納しようとすると、暗黙的にintとしてキャストされます。その過程で、小数点部分は切り捨てられます。つまり、4.85を終日格納しようとすると、常に整数4として格納されます。

GetFloat()から返された値は、intではなくfloatvarに格納する必要があります。後で、100を掛けて丸め、次にそれをintに格納します。

補足として、最後の数行は機能しますが、 、ひどくきれいではありません。新しいfloatを作成して、別のfloatとなるはずのものを変更して結果を格納し、次の行でfloatをintにキャストして、intをfloatに格納します。フロートを丸めて同じフロートに格納しますが、次の行でフロートをintとしてキャストし、新しいint変数に格納します。または、すべてを1行で実行する方が簡単です。 int change = roundf(dollars*100);

これで質問に答える場合は、チェックマークをクリックして同意してください。フォーラムのメンテナンスを続けましょう。 😉

コメント

  • どうすればそれを見逃すことができますか?どうもありがとうございます。ラウンド関数を3時間いじった後、私のコードはひどいものに見えました。'このようなばかげた間違いを犯す可能性があるとは信じられません;)
  • これは私が非常にうるさいのかもしれませんが、暗黙のキャストを避け、常に明示的なキャストを使用する必要がありますコンパイラーだけでなく、将来のプログラマーにとっても、実際に何をしようとしているのかがはるかに明確になります。それは第二の性質であり、多くの頭痛の種を救う(そしてはるかに良いコードを作る)ので、プログラミングの早い段階に入るのは非常に良い習慣です。 int change =(int)(roundf(dollars * 100));

Written by admin

コメントを残す コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

最近の投稿

  • 共振ダイポールを備えたバランの使用
  • “できない”と“できない? [重複]
  • JFKでは国内線のエアサイドターミナル間を移動できますか?
  • “深く感謝します”または“深く感謝します”
  • '抽象的なアイデア'とはどういう意味ですか? [クローズ]

アーカイブ

  • 2021年2月
  • 2021年1月
  • 2020年12月
  • 2020年11月
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어

Copyright Tiantan 2021 | Theme by Theme in Progress | Proudly powered by WordPress

Back to top