-2

我编写了一个基本的简单程序来计算对 C 的兴趣,这是代码。

#include<stdio.h>
    main()
    {

    float  principal,rate,time,si;

    printf("Please Enter The Principal Value = \n\t");
    scanf("%f",&principal);
    printf("Please Enter The Rate =\n\t");
    scanf("%f",&rate);
    printf("Please Enter Time =\n\t");
    scanf("%f",&time);

    si=(principal*rate*time)/100;
    printf("The Simple Interest Is = \t%f",si);

     }

现在的问题是,每当我输入小值时,结果都是正确的,但是每当我输入一些在 FLOAT 限制内的大值时,我都会得到另一个整数值匹配但十进制值不匹配的值。我已经在 Linux 中创建了这个程序,并在 Windows 和 C Free 的 Turbo C 中尝试了同样的事情,并且出现了同样的错误。我也尝试过初始化这些值,但没有用。

出现的流氓值示例 -

Principal = 123456 , Rate = 1, Time =1
Principal = 4512 , Rate = 412, Time =12

还有更多的例子。请解决我的这个问题

4

1 回答 1

3

对于浮点数计算,四舍五入是一个常见问题,例如,当我使用 运行您的程序时Principal = 123456 , Rate = 1, Time = 1,结果是1234.560059.

一个简单的改进是使用double而不是float,它提供了更高的精度,请注意您应该相应地更改%f为:scanf%lf

double  principal,rate,time,si;

printf("Please Enter The Principal Value = \n\t");
scanf("%lf",&principal);

使用double,结果是1234.560000,但是请注意,舍入仍然会发生,只是精度更高。

于 2013-09-08T04:36:29.150 回答