| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2154 人关注过本帖
标题:编写一个函数float fun(double h),函数的功能是对变量h中的值保留2位小数 ...
只看楼主 加入收藏
兰雅轩
Rank: 1
来 自:安徽宿松
等 级:新手上路
帖 子:13
专家分:0
注 册:2012-3-11
结帖率:60%
收藏
已结贴  问题点数:5 回复次数:9 
编写一个函数float fun(double h),函数的功能是对变量h中的值保留2位小数,并对第3位进行四舍五入(规定h中的值为正数)。如:h值为8.3243
编写一个函数float fun(double h),函数的功能是对变量h中的值保留2位小数,并对第3位进行四舍五入(规定h中的值为正数)。如:h值为8.32433,则函数返回8.32.
搜索更多相关主题的帖子: 函数 double 
2012-03-11 16:06
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:2 
你试试合用不:

程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

float DoubleToFloat(double h);

void main(void)
{
    printf_s("%.2f\n", DoubleToFloat(123456.3263));
    _getch();
}

float DoubleToFloat(double h)
{
    float ret = 0.0;

    char buffer[20];
    sprintf_s(buffer, "%.2f", h);
    if (strlen(buffer) <= 9)
    {
        sscanf(buffer, "%f", &ret);
    }

    return ret;
}


[ 本帖最后由 TonyDeng 于 2012-3-11 20:22 编辑 ]

授人以渔,不授人以鱼。
2012-03-11 20:13
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:1 
奇怪,最近总看到printf_s这样的函数,大家都转到VS门下了?

那既然用了一个C++编译器,为什么不直接用cin, cout呢?这些安全函数看起来很不顺眼。

重剑无锋,大巧不工
2012-03-11 20:28
兰雅轩
Rank: 1
来 自:安徽宿松
等 级:新手上路
帖 子:13
专家分:0
注 册:2012-3-11
收藏
得分:0 
回复 2楼 TonyDeng
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

float DoubleToFloat(double h);

void main(void)
{
    printf("%.2f\n", DoubleToFloat(123456.3263));
    _getch();
}

float DoubleToFloat(double h)
{
    float ret = 0.0;

    char buffer[20];
    sprintf(buffer, "%.2f", h);
    if (strlen(buffer) <= 9)
    {
        sscanf(buffer, "%f", &ret);
    }

    return ret;
}
不太懂,因为才刚学,不过还是谢谢喽,呵呵呵
还有,那个要去掉-s才行


走路、、、我们不拘束。。。
2012-03-11 23:32
兰雅轩
Rank: 1
来 自:安徽宿松
等 级:新手上路
帖 子:13
专家分:0
注 册:2012-3-11
收藏
得分:0 
#include <stdio.h>
float fun(double h)
{
    double a;
    h=h*100+0.5;
    a=(int)h;
    h=a/100;
    return h;
}
main()
{
    double h;
    printf("请输入一个正数\n");
    scanf("%f",&h);
    h=fun(h);
    printf("h=%f\n",h);
}

走路、、、我们不拘束。。。
2012-03-12 12:09
于祥
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:5
帖 子:1047
专家分:4132
注 册:2011-4-24
收藏
得分:2 
程序代码:
#include <stdio.h>
float fun(double h);
int main(void)
{
    double n;

    scanf("%lf",&n);
    printf("%.2lf\n",fun(n));

    return 0;
}
float fun(double h)
{
    double m;

    m = h - (int)h;
    if (m / 100.0 >= 0.005)
    return (int)h + m / 100.0 + 0.01;
    return h;
}

这个怎么样?

最基础的往往是你最容易忽略的!
2012-03-12 13:14
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
高精度的double向低精度的float转换存在失真问题,你们还敢进行乘除100运算?

授人以渔,不授人以鱼。
2012-03-12 14:23
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
收藏
得分:0 
为什么我记得printf("%.2lf")就能直接实现四舍五入的功能啊。

顺便求解一个问题,昨天刚看了小数的存储方式,打个比方a=0.2,0.2在2进制里面是无限小数,所以电脑不是会存不准吗?为什么输出的时候又准了呢?
2012-03-12 15:17
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 8楼 czz5242199
printf()的"%.2f"确实进行了四舍五入操作。而你后面的问题,0.2不行,你试试下面的代码:

float x = 140.20F;
printf_s("%f\n", x);


输出应该是140.199997,用%.2f输出就是140.20。

[ 本帖最后由 TonyDeng 于 2012-3-12 15:52 编辑 ]

授人以渔,不授人以鱼。
2012-03-12 15:37
于祥
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:5
帖 子:1047
专家分:4132
注 册:2011-4-24
收藏
得分:0 
回复 7楼 TonyDeng
那该怎么做?

最基础的往往是你最容易忽略的!
2012-03-13 22:50
快速回复:编写一个函数float fun(double h),函数的功能是对变量h中的值保留2 ...
数据加载中...
 
   



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

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