商の計算結果で少数部分が切り捨てされてしまう

投稿者: Anonymous

和、差、積、商を求めるプログラムについて。

それぞれvoidで値の格納して、main関数によって答えを入出力したいのですが、商の答えが小数点以下で切り捨てられてしまいます。

shouの部分はdoubleで格納し、特に変な点はないと思ったのですが、下記のように小数点以下を切り捨てた状態で出力されてしまいます。

13/2=6.500000と出力させるにはどこを直したらよいのでしょうか。


ソースコード

void  fouroperation(int n1, int n2, int *wa, int *sa, int *seki, double *shou)
{
    *wa=n1+n2;
    *sa=n1-n2;
    *seki=n1*n2;
    *shou=n1/n2;
}

int main(void)
{
    int n1,n2,wa,sa,seki;
    double shou;
    printf("Input n1: ");
    scanf("%d",&n1);
    printf("Input n2: ");
    scanf("%d",&n2);

    fouroperation(n1,n2,&wa,&sa,&seki,&shou);

    printf("%d+%d=%dn",n1,n2,wa);
    printf("%d*%d=%dn",n1,n2,seki);
    printf("%d-%d=%dn",n1,n2,sa);
    printf("%d/%d=%fn",n1,n2,shou);

    return 0;
}

実行結果

$ ./a.out
Input n1: 13
Input n2: 2
13+2=15
13*2=26
13-2=11
13/2=6.000000

解決

これで大丈夫だと思います。

void  fouroperation(int n1, int n2, int *wa, int *sa, int *seki, double *shou)
{
    *wa=n1+n2;
    *sa=n1-n2;
    *seki=n1*n2;
    *shou=(double)n1/(double)n2;
}
回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *