为了账号安全,请及时绑定邮箱和手机立即绑定

为什么结果有问题?

float a = 3.001;

int b = (int)(a - 1.001);

printf("%d",b);

为什么出现的结果是1?

而且如果我改成:
float a = 3.000;

int b = (int)(a - 1.000);

printf("%d",b);

结果又变成2了?

求解。

正在回答

5 回答

四舍五入,因为3.001不大于或等于3.5,所以会被int默认为2


0 回复 有任何疑惑可以回复我~

#include <stdio.h>
int main()
{
    double num = 2.5;      //定义浮点型变量num并赋值为2.5
    int numOne = 2.5;
    int numTwo = (int)numOne;
    printf("num的整数部分是%d\n", numOne);  
    return 0;
}

1 回复 有任何疑惑可以回复我~
double a = 3.001;
int b = (int)(a-1.001);
printf("%d",b);

注意看一下你的数据类型,你所说的问题代码中第一行a的数据类型如楼上所说是单精度浮点型。数据类型有误编译器自然不会给你正确的答案

0 回复 有任何疑惑可以回复我~

float就成了3-1.001了而不是3.001-1.001 应该是这样

0 回复 有任何疑惑可以回复我~

float 是单精度浮点型



1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926217    人
  • 解答问题       20797    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

为什么结果有问题?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信