子书天河 发表于 2022-4-18 16:13:05

算数运算

#include <stdio.h>
#include <math.h>

int main()
{
      float price, area; // 单价、面积、
      float down_payment; // 首期付款
      float total_price; // 房款总额
      int ratio; // 按揭成数、

      printf("请输入单价(元/平方):");
      scanf("%f", &price);
      printf("请输入面积:");
      scanf("%f", &area);
      printf("请输入按揭成数:");
      scanf("%d", &ratio);
      
      total_price = price * area;
      down_payment = total_price * (1 - (float)ratio / 10); // 强制转换ratio为浮点型

      printf("房款总额:%f元\n", total_price);
      printf("首期付款:%f元\n", down_payment);

      return 0;
}
单价:6000
面积:1200
按揭成数:7
首期付款不应该是:216000.000000元吗,为什么小数点后还有数字

wp231957 发表于 2022-4-18 16:14:52

正常,你可以用小数点位数来限制精度

zzxhh628 发表于 2022-4-18 17:19:50

#include <stdio.h>
#include <math.h>

int main()
{
float price, area; // 单价、面积
float down_payment; // 首期付款
float total_price; // 房款总额
int ratio; // 按揭成数

printf("请输入单价(元/平方):");
scanf("%f", &price);
printf("请输入面积:");
scanf("%f", &area);
printf("请输入按揭成数:");
scanf("%d", &ratio);

total_price = price * area;
down_payment = total_price * (1 - (double)ratio / 10); // 强制转换ratio为浮点型

printf("房款总额:%f元\n", total_price);
printf("首期付款:%f元\n", down_payment);

return 0;
}
这样试试?

yzzc 发表于 2022-4-18 17:43:43

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int main(void)
{
    float price, area; // 单价、面积、
    float down_payment; // 首期付款
    float total_price; // 房款总额
    int ratio; // 按揭成数、

    printf("请输入单价(元/平方):");
    scanf("%f", &price);
    printf("请输入面积:");
    scanf("%f", &area);
    printf("请输入按揭成数:");
    scanf("%d", &ratio);

    total_price = price * area;
    down_payment = total_price * (1 - 1.0*ratio / 10); // 强制转换ratio为浮点型有精度,可以直接乘以1.0自动转换为float

    printf("房款总额:%f元\n", total_price);
    printf("首期付款:%f元\n", down_payment);
        return 0;
}

结果
请输入单价(元/平方):6000
请输入面积:120
请输入按揭成数:7
房款总额:720000.000000元
首期付款:216000.000000元

一一不二 发表于 2022-4-19 08:24:26

我试了一下输出时用%.2f还是会有,不知道是不是因为在手机运行的问题,结果为216.02

一一不二 发表于 2022-4-19 08:33:13

zzxhh628 发表于 2022-4-18 17:19
#include
#include



这个可以,但是定义变量ratio为float也是可以的,我想问一下为什么像楼主那样强制转换,会出现那样的问题?我是这样想的,float和double一个是单精度浮点型,另一个是双精度浮点型,都是转换成浮点型,差别不是应该不大吗?

zzxhh628 发表于 2022-4-19 08:41:48

一一不二 发表于 2022-4-19 08:33
这个可以,但是定义变量ratio为float也是可以的,我想问一下为什么像楼主那样强制转换,会出现那样的问题 ...

float好像不太精准,推荐用double。
页: [1]
查看完整版本: 算数运算