私は学校向けのプログラムを実行していますが、Cが正しく計算されていないという簡単な数学の問題にぶつかっています。私は単純に出力を数値で分割しようとしており、元の数値を返しています。C掛け算と除算
int main(void)
{
float fcost = 599;
float shipt = (fcost/120);
shipt = shipt * 120;
printf("%4.0f", shipt);
return 0;
}
私は学校向けのプログラムを実行していますが、Cが正しく計算されていないという簡単な数学の問題にぶつかっています。私は単純に出力を数値で分割しようとしており、元の数値を返しています。C掛け算と除算
int main(void)
{
float fcost = 599;
float shipt = (fcost/120);
shipt = shipt * 120;
printf("%4.0f", shipt);
return 0;
}
コメントに記載されているので、除算の結果を切り捨てたいとします。
int fcost = 599;
int shipt = (fcost/120);
shipt *=120;
printf("%d", shipt);
ありがとう、私は今や気が気になりません。 –
あなたは、単に、120で割り、次の行を削除し、それが前の行のプロセスを無効にしたようすなわち
shipt * = 120
を削除しようとしている場合。
これはあなたの意思ではない場合は、明確にしてください。
数字と120の結果を120で掛けたいと思っています。私はさらに1行ですべてを試しました。shipt = 120 *(fcost/120) –
このように考えてみてください。私は5リンゴが20ドルの合計を要しています。今、私がリンゴ1個分の個別コストを見つけたら、その4 $を得る。さて、基本的に私は5つのリンゴを買ってから、合計5 * 4 $を費やします。これはあなたが表示している20 $です。コードの冗長性を確認してください。 –
yea iseeしかし、私がしようとしているのは、599を120で割った結果が4で、120が4になり、480になります。私のプログラムでは、12のボックスでディスクを分割しています。あなたはどこでこれと一緒に行くのか分かりますか? –
:あなたがint
代わりにfloat
よう整数除算ではなく(小数部分を保持する)浮動小数点除算の(小数部分を切り捨てた)が実行されるを使用する必要があり、それを行うために
OPは、切り捨てられた商をwantに表示します。
FP番号をint
に変換すると、元のdouble
がint
の範囲外にある場合、未定義の動作(UB)が発生する危険性があります。
上記の問題を回避するために、標準ライブラリにはさまざまな丸め関数が用意されています。
#include <math.h>
int main(void) {
float fcost = 599;
// to round to the next lower whole number
float shipt = floorf(fcost/120);
// to round to the next higher whole number
float shipt = ceilf(fcost/120);
// to round to the next whole number toward 0
float shipt = truncf(fcost/120);
shipt *= 120;
printf("%4.0f", shipt);
return 0;
}
'return 0;)' ... ___seriously___ ?? –
? 'shipt * = 120;が何を知っていますか?どうしてそこに置いたのですか? – user463035818
関連のないタグは使用しないでください! C++は別の言語です! – Olaf