标题:浮点数的输出讨论
只看楼主
朝F
Rank: 1
等 级:新手上路
帖 子:8
专家分:7
注 册:2019-11-7
结帖率:66.67%
已结贴  问题点数:20 回复次数:4 
浮点数的输出讨论

#include<stdio.h>
int main()
{
    int count,year;
    float interest,rate,sui=0.05,total;
    printf("请输入你想存多少的钱:\n");
    scanf("%d",&count);
    printf("请输入你想存几年:\n");
    scanf("%d",&year);
    switch(year)
    {
        case 1:
        printf("你想存一年的话rate=1.14那么可以得利息有:\n");
        rate=0.0114;
        interest=count*rate*year*(1-sui);
        break;
        case 2:
        printf("你想存两年的话rate=2.08可得的利息有:\n ");
        rate=0.0208;
        interest=count*rate*year*(1-sui);
        break;
        case 3:
        printf("你想存三年的话rate=3.20可得的利息有:\n ");
        rate=0.0320;
        interest=count*rate*year*(1-sui);
        break;
        case 4:
        printf("你想存四年的话rate=4.15可得的利息有:\n ");
        rate=0.0415;
        interest=count*rate*year*(1-sui);
        break;
    }
   
    total=count+interest;
    printf("那么你可得的利息有%5.1f",interest);
    printf("\n你可得的本金加利息有%-6f",total);
    return 0;
}
我输入count为5000存期为两年,最后一行的输出为5197.600098,那么我问题来了我设置的%-6f
宽度的限制作用去哪了?6个宽度理论不应该输出5197.6吗?后面为啥跟那么多零?
而设置%6.1f时候才输出5197.6,如果我设置%1.1f,最后输出也是5197.6,这又是为啥?
搜索更多相关主题的帖子: case count year printf 输出 
2019-11-07 14:00
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
得分:8 
在C语言的输出中,%m.nf意义:1、f表示输出的数据是浮点数;2、n表示输出的数据保留小数点后n为小数,第n+1位四舍五入,若不足n位则补0;3、m表示输出数据在终端设备上占有m个字符,并右对齐,如果实际的位数小于m时,左边用空格补足,如果实际位数大于7时,向右扩展输出。
比如:
printf("%4f\n",123.4);
printf("%2f\n",123.4);
printf("%.4f\n",123.4);
输出结果为:
123.4
123.4
123.4000
2019-11-07 14:12
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:554
专家分:3690
注 册:2019-7-29
得分:0 
%6.1f。代表输出的整数部分为6,位,小数部分为1位。如果输出的整数部分大于6位,则以实际整数位数为准。所以%-6f,%1.1f的整数部分均小于实际输出的4,所以输出实际位数。

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2019-11-07 14:13
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
得分:0 
%-6f表示小数点后面要输出6位小数,也就是5197.600098中的.600098
2019-11-07 14:17
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:12 
前面的数仅在输出宽度不足时才起作用,否则的话……,举个例子
printf( "%2.0f", 12345 ) 如果输出 12 的话,那就离谱了

默认小数点后6位,所以
printf( "%-6f\n", 5197.6 );
等同于
printf( "%-6.6f\n", 5197.6 );

我猜你需要的是
printf( "%-6.1f\n", 5197.6 );
2019-11-07 14:58



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-497661-1-1.html




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

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