问题标题: 酷町堂:四舍五入、利息水电费

0
0
已解决
陈曦
陈曦
资深天翼
资深天翼

有谁知道关于  四舍五入、利息水电费 的知识点或笔记?要详细。

 

我会采纳3天内并且符合要求的回答。

陈曦在2020-03-18 14:13:36追加了内容

更要准确!


1
已采纳
被禁言 姜思远
姜思远
初级光能
初级光能

四舍五入:
a=1.23489;
int(a*100+0.5)/100.0 
123.489
123.989
printf("%.2f",(int)(a*100+0.5)/100.0);(保留二位)
printf("%.1f",(int)(a*10+0.5)/10.0);(保留1位)
如果a*100或者a*10超出int范围了,把int改成long long

利息水电费

就是分段计算,比如最经典的出租车

--------------------------------------------

出租车在XX公里内(起步价)是x元,超过XX公里部分每公里x元

具体代码:

if(n<=XX)
        ??????
    if(n>XX&&n<=XXX)
        ???????
    if(n>XXX)
        ?????

利息水电费就是把出租车变成水电费

1
张帆
张帆
中级天翼
中级天翼

C语言中实现四舍五入: 
(int)(a+0.5)即可。 
很巧妙的用了取整规则。 
也不用导入math.h 
同样注意负数的情况。 
把 + 换成 - 即可。

float f = …..; 
int i = (int)(f + 0.5); 
i就是f四舍五入的结果。

四舍五入的算法:
我们知道,C语言中去除小数位采用的方法就是强制性转化成整型类型。那么假如我们要对一个小数保留三个小数位而第四个小数位按照四舍五入的规则进行, 
该怎样实现呢?很简单,我们将数字扩大1000倍,使得第四位小数称为新数字的第一位,然后我们可以给它加上0.5后再进行强制性转化。加0.5的原因就是: 
假如这个小数位的数值大于5,加上0.5能够实现进位的作用,倘若小于0.5,就没有实现进位的作用。如此,就能实现小数位的四舍五入。然后我们再对这个数值 
进行强制性转化,然后再处以1000.0,在输出的时候用%.3f以实现保留三位小数。

# include <stdio.h>
int main(void) {
    double a;

    cin>>a;
    a = (int)(a*1000+0.5)/1000.0;
    printf("%.3f", a);
    return 0;
}
有一个round函数可以直接调用, 
round(x) 
参数时double型,返回小数对整数部分的四舍五入值 
比如 round(3.623); 返回4

C语言中保留两位小数:小技巧 
① 
double a = 4.567; //保留到小数点后两位 
doublet b =(int)((a * 100) + 0.5) / 100.0; 
输出结果为4.56 
精度比较高 
② 
double a = 23.456789;

printf(“%.2f”,a); //输出为23.45

#include<stdio.h>
#include<math.h>
void main()
{
    double x;
    cin>>x;
    int y = round(x);
    printf("%d",y);
}

张帆在2020-03-19 14:06:26追加了内容

利息水电费没有什么特殊的:

主要是套公式

然后就是%几

比如n的x%=n/100*x

3的5%就是=3/100*5

                 =3*0.05

 

0
我要回答