| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1065 人关注过本帖
标题:怎么消除这条警告?conversion from 'int ' to 'float
只看楼主 加入收藏
安宁1991
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:76
专家分:123
注 册:2014-4-3
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:12 
怎么消除这条警告?conversion from 'int ' to 'float
程序如下,执行求余运算没有问题。但总是提示int型转换float型可能会丢失数据。怎么解决?求教
程序代码:
#include<stdio.h>
int main()
{
    float a,b,num;//定义三个浮点型变量
    char c,y;//定义一个字符变量
    printf("\t\t\t简单计算器\n");
dz:printf("请输入表达式:(可以执行+-*/%%运算)\n");
   scanf("%f%c%f",&a,&c,&b);
    if(c=='+')
    {
        num=a+b;
    }
    else if(c=='-')
    {
        num=a-b;
    }
    else if(c=='*')
    {
        num=a*b;
    }
    else if(c=='/')
    {
        num=a/b;
    }
    else if(c=='%')
        {
            num=(int)a%(int)b;
        }
    printf("%.2f%c%.2f =%.2f\n\n",a,c,b,num);
    printf("是否继续?继续请按y,退出请按n:\n");
    getchar();
    scanf("%c",&y);
    if(y=='y'||y=='Y')
    {
        goto dz;
    }
    return 0;
}

    
搜索更多相关主题的帖子: conversion 
2014-04-04 14:56
安宁1991
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:76
专家分:123
注 册:2014-4-3
收藏
得分:0 
本想用switch语句来执行的,if语句实在不好看

因为有你,所以做什么都有动力。z,爱你。
2014-04-04 14:58
安宁1991
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:76
专家分:123
注 册:2014-4-3
收藏
得分:0 
用了switch语句,好看多了。。可是警告无法消除,求指教啊。
程序代码:
#include<stdio.h>
int main()
{
    float a,b,num;//定义三个浮点型变量
    char c,y;//定义一个字符变量
    printf("\t\t\t简单计算器\n");
dz:printf("请输入表达式:(可以执行+-*/%%运算)\n");
   scanf("%f%c%f",&a,&c,&b);
    switch(c)
    {
    case '+':num=a+b;
    break;

    case '-':num=a-b;
    break;

    case '*':num=a*b;
    break;

    case '/':num=a/b;
    break;

    case '%':num=(int)a%(int)b;
    break;

    default:num=0;
    }
    printf("%.2f%c%.2f =%.2f\n\n",a,c,b,num);
    printf("是否继续?继续请按y,退出请按n:\n");
    getchar();
    scanf("%c",&y);
    if(y=='y'||y=='Y')
    {
        goto dz;
    }
    return 0;
}

    

因为有你,所以做什么都有动力。z,爱你。
2014-04-04 15:09
shmilyflf
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:356
专家分:1008
注 册:2012-12-9
收藏
得分:7 
num=(int)a%(int)b;把一个高精度(float)的数强制转换为低精度(int)的数,肯定会警告你的。比如a=2.3用int t=(int)a后t=2了。
2014-04-04 15:14
安宁1991
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:76
专家分:123
注 册:2014-4-3
收藏
得分:0 
回复 4楼 shmilyflf
如何解决啊?难道求余这段必须舍弃吗?

因为有你,所以做什么都有动力。z,爱你。
2014-04-04 15:17
lonely_21
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:108
专家分:395
注 册:2011-11-13
收藏
得分:7 
num=(int)a%(int)b;这句改成num=(float)((int)a%(int)b),只不过你余除的结果怎么要存到float型数据中
2014-04-04 15:33
lonely_21
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:108
专家分:395
注 册:2011-11-13
收藏
得分:0 
或者余除这块你加个整除的变量也行
2014-04-04 15:33
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:7 
以下是引用安宁1991在2014-4-4 15:17:34的发言:

如何解决啊?难道求余这段必须舍弃吗?


是你要进行强制转换的  还咋解决啊

DO IT YOURSELF !
2014-04-04 15:36
安宁1991
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:76
专家分:123
注 册:2014-4-3
收藏
得分:0 
重新研究了下,终于不会报警了!有哪位大大可以帮我测试下会不会报警啊?我用的是vc++6.0。
程序代码:
#include<stdio.h>
int qy(int x,int y)
{
    return x%y;
}
int main()
{
    float a,b,num;//定义三个浮点型变量
    char c,y;//定义一个字符变量
    printf("\t\t\t简单计算器\n");
dz:printf("请输入表达式:(可以执行+-*/%%运算)\n");
   scanf("%f%c%f",&a,&c,&b);
    switch(c)
    {
    case '+':num=a+b;
    break;

    case '-':num=a-b;
    break;

    case '*':num=a*b;
    break;

    case '/':num=a/b;
    break;

    case '%':num=qy((int)a,(int)b);
    break;

    default:num=0;
    }
    printf("%.2f%c%.2f =%.2f\n\n",a,c,b,num);
    printf("是否继续?继续请按y,退出请按n:\n");
    getchar();
    scanf("%c",&y);
    if(y=='y'||y=='Y')
    {
        goto dz;
    }
    return 0;
}

   

因为有你,所以做什么都有动力。z,爱你。
2014-04-04 15:39
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
知道char的表达范围吗

DO IT YOURSELF !
2014-04-04 15:44
快速回复:怎么消除这条警告?conversion from 'int ' to 'float
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025893 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved