c语言模拟超市结账四舍五入,超市结账四舍五入怎么处罚商家得钱给谁

发布时间:2023-01-05

本文目录一览:

  1. c语言中如何进行四舍五入,求详细解释!!谢谢!
  2. c语言怎么四舍五入
  3. c语言中怎么四舍五入
  4. C程序中四舍五入怎么弄

c语言中如何进行四舍五入,求详细解释!!谢谢!

方法一:

#include<stdio.h>
int main()
{
    double d1, d2, d3;
    d1 = -3.1415926;
    d2 = (int)(d1 * 10 + 0.5) * 0.1;
    printf("d1=%f, 保留一位小数的结果为:%.1f\n", d1, d2);
    d3 = (int)(d1 * 1000 + 0.5) * 0.001;
    printf("d1=%f, 保留三位小数的结果为:%.3f", d1, d3);
}

总结:
四舍五入保留 n 位小数的公式为:

(int)(x * 10^n + 0.5) * 10^(-n)

注意:此方法对负数无效;如果非要用,可以先取正数部分计算,最后加上负号。

方法二:

使用 round() 函数。

#include "stdio.h"
#include "math.h"
void main()
{
    float x;
    scanf("%f", &x);
    int y = round(x);
    printf("%d", y);
}

扩展资料:

C语言编写注意事项:

  1. % 运算符不能应用于 floatdouble 类型。
  2. char 类型转换为 int 型时,无法判断它是 signed 还是 unsigned。这样其结果有可能为负数,因此转换时尽量指定 signedunsigned 限制符。
  3. ++ii++ 不同之处:++i 是先 +1 再使用,i++ 是先使用 i 再递加 1。
  4. 三元运算符 ?: 第一个表达式的括号不是必须的,但由于三元表达式的优先级非常低,我们还是将第一个表达式用 () 括起来便于阅读和理解。
  5. C语言中可以使用递归(即函数调用自身函数),其不节省存储器开销也不加快执行速度,只是使程序紧凑便于理解。

c语言怎么四舍五入

要用 C 语言实现四舍五入,有一个很巧妙的方法,仅使用 int i = (int)(a + 0.5) 即可。如果遇到有负数的情况,只需要将加号改为减号即可。

C语言中四舍五入表示方法:

int a = 100.453627;
printf("%.1f", a + 0.05); // 四舍五入到十分位
printf("%.2f", a + 0.005); // 四舍五入到百分位

以此类推,对于十进制小数 .5 类型数(如 0.511.518.5),即小数部分可以以 2 的负一次方来表示的数,这时计算机是可以“完美”地储存这个十进制小数字。而对于 .6.7.8.9.4.3.1.2 这类数字,计算机虽然无法“完美”地储存这些数字,在这样的情况下可以运用所谓的“+0.5 的取整法”。 所谓加 0.5 的取整法就是运用在 C 语言中浮点型数强制转换为整型数时只会保留整数,而不会进行四舍五入的计数法则。所以对于保留整数的小数来说,我们只需在其原来的基础上 +0.5 后再进行强制类型转换,就可以达到不会出错的四舍五入。

有的标准不存在 C 语言四舍五入:

C 语言中的四舍五入在 C98 标准中,标准 C 函数库是没有关于四舍五入的函数的,到了 C99 标准才出现了 ceil()floor()nearbyint()round() 之类丰富的取整函数。 现在使用的 GCC 都是 C99 标准了,而 Windows 下的 VC(包括 VS2008)还是 C98 标准,所以需要遵从严格格式,包括没有内联 inline、没有单行注释 //、变量要写在代码块的前头等等,最大的缺点就是没有那些函数的支持。

c语言中怎么四舍五入

#include <stdio.h>
int main(void)
{
    float a;
    scanf("%f", &a);
    a = (int)(a * 1000 + 0.5) / 1000.0;
    printf("%0.3f", a);
    return 0;
}

扩展资料:

其他方法实现四舍五入:

int myround(double indata, int precision, double *outdata)
{
    long pre = 1;
    for (int i = 0; i < precision; i++) {
        pre *= 10;
    }
    if (cy_FloatCompare(indata, 0.00) > 0) {
        *outdata = (int)((indata * pre) + 0.5) / 100.00;
    } else {
        *outdata = (int)((indata * pre) - 0.5) / 100.00;
    }
    return 0;
}

注:cy_FloatCompare 是浮点数与 0 比较的函数,假设它存在。返回值与 strcmp 相同。

C程序中四舍五入怎么弄

C 的整数除法,取整之类操作都是扔小数的,你想达到“舍 4 留 5”,只需要简单的在末尾 +0.5 就行了。因为小于 0.5 的,加了还是不进位,所以取整是舍;而大于等于 0.5 的小数部分加 0.5 后,会进位,整数部分加了 1,再舍小数部分,也比原来整数多 1 了,相当于 5 入。