私はそこにいます。C倍精度の結果をdouble doubleで返します
私はCを学んだし、私はこのコードを持っている:このコードで
#include <stdio.h>
#include <stdlib.h>
int main()
{
double buyval, deliveredval, change;
printf("What's the buy value? ");
scanf("%lf", &buyval);
do{
printf("What's the value delivered? ");
scanf("%lf", &deliveredval);
if (deliveredval < buyval){
printf("Delivered value must be greater then buy value \n\n");
}
} while (deliveredval < buyval);
change = deliveredval - buyval;
printf("Change is %4.2lf", change);
return 0;
}
を、最後の印刷が常に0.00であるが、私は
printf("Change is %4.2f", change);
に
printf("Change is %4.2lf", change);
を変更されました
期待どおりに動作します。何故ですか?ダブルスはlfでフォーマットされていませんか?
ありがとうございました。そしてscanfでは%lfの代わりに%fを使うべきですか? – Favolas
'long double'に'%Lf'が使用されています。 '%lf'はC99の標準に従ってprintfの'%f'と同じでなければなりません。 – interjay
いいえ、 'scanf'の'%f'は 'float'のみ、'%lf'はdoubleのためです。 ( '%llf'を使用してlong doubleをスキャンする) – asaelr