100 分の 1 を超えるすべてを切り捨てようとしています。(13.4396 は 13.43 になります) それは常に動作するか、まったく動作しないでしょうか?
私は99%機能するこの式を持っています:
input = (( (double) ((int)(orgInput * 100)) ) / 100) ;
次に、算術的に同等な次の数式シーケンスがあります。
input = (orgInput * 100);
input = (int) input;
input = (double) (input);
input = input / 100;
これらの入力では、目的の結果が得られません (式は切り捨てられて切り捨てられますが、分解されたステップは目的の結果を出力します)。
12.33
99.99
22.22
44.32
56.78
11.11
そして、私にとってさらに大きな謎は、なぜ 33.30 がどちらでも機能しないのかということです。以下は、私の問題を示すために継続的に実行される私のプログラムです。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
double orgInput, input;
while (4!=3)
{
printf("Please enter the dollar amount (up to $100) => ");
scanf("%lf", &orgInput);
/* Truncates anything past hundredths place */
input = (orgInput * 100) ;
printf("\n1. input is %g \n ", input);
input = (int) input ;
printf("\n2. input is %g \n ", input);
input = (double) (input) ;
printf("\n3. input is %g \n", input);
input = input / 100 ;
printf("\n4. input is %.2lf \n", input);
input = (( (double) ((int)(orgInput * 100)) ) / 100) ;
printf("\nUsing the formula the input is %.2lf \n \n\n", input);
}
system("PAUSE");
return 0;
}
前もって感謝します!!!!PSフォーマットについて申し訳ありません私はまだstackoverflowに慣れています
キー フレーズ: double から int への変換 精度エラー