• C++实现四舍五入的几种方法


    保留整数 

    - 只需要得到四舍五入的输出

    - 需要得到四舍五入的结果

    方法1:写一个函数

    方法2:调用中的函数round

    保留小数点后k位 

    - 只需要得到四舍五入的输出

    方法1:利用printf函数

    方法2:利用库的fixed和setpricision函数

    - 需要得到四舍五入的结果


    保留整数 

    - 只需要得到四舍五入的输出

    若只需要得到四舍五入的输出,那我们可以利用printf来进行输出,选择保留小数点后0位,即可达到四舍五入的目的

    1. #include
    2. using namespace std;
    3. int main()
    4. {
    5. double a = 1.4999999;
    6. double b = 1.5000001;
    7. double n_a = -1.4999999;
    8. double n_b = -1.5000001;
    9. printf("%.0f\n", a); // 1
    10. printf("%.0f\n", b); // 2
    11. printf("%.0f\n", n_a); // -1
    12. printf("%.0f\n", n_b); // -2
    13. return 0;
    14. }

    - 需要得到四舍五入的结果

    方法1:写一个函数

    只需要写一个函数判断当前数减去其整数部分是否大于等于0.5,若是则其整数部分进1,否直接输出其整数部分

    1. #include
    2. using namespace std;
    3. // 用于四舍五入
    4. int round_0 (double n)
    5. {
    6. // 若为负数,则先化为正数再进行四舍五入
    7. if (n > 0)
    8. return n - int(n) >= 0.5 ? int(n)+1 : int(n);
    9. else
    10. return -n - int(-n) >= 0.5 ? -(int(-n) + 1) : -int(-n);
    11. }
    12. int main()
    13. {
    14. double a = 1.4999999;
    15. double b = 1.5000001;
    16. double n_a = -1.4999999;
    17. double n_b = -1.5000001;
    18. cout << round_0(a) << endl; // 1
    19. cout << round_0(b) << endl; // 2
    20. cout << round_0(n_a) << endl; // -1
    21. cout << round_0(n_b) << endl; // -2
    22. return 0;
    23. }

    方法2:调用<cmath>中的函数round

    头文件中的round函数

    1. #include
    2. #include
    3. using namespace std;
    4. int main()
    5. {
    6. double a = 1.4999999;
    7. double b = 1.5000001;
    8. double n_a = -1.4999999;
    9. double n_b = -1.5000001;
    10. cout << round(a) << endl; // 1
    11. cout << round(b) << endl; // 2
    12. cout << round(n_a) << endl; // -1
    13. cout << round(n_b) << endl; // -2
    14. return 0;
    15. }

    保留小数点后k位 


    - 只需要得到四舍五入的输出

    方法1:利用printf函数

    类似的,我们可以利用printf函数来完成自动的四舍五入过程。

    若保留两位小数,那么我们可以直接使用printf输入小数点后两位即可。注意如果输出结果的0不够小数点后两位,会自动补齐到小数点后两位。

    1. #include
    2. using namespace std;
    3. int main()
    4. {
    5. double a = 1.499;
    6. double b = 1.500;
    7. double c = 1.48;
    8. double d = 1.5;
    9. double n_a = -1.499;
    10. double n_b = -1.500;
    11. printf("%.2f\n", a); // 1.50
    12. printf("%.2f\n", b); // 1.50
    13. printf("%.2f\n", c); // 1.48
    14. printf("%.2f\n", d); // 1.50
    15. printf("%.2f\n", n_a); // -1.50
    16. printf("%.2f\n", n_b); // -1.50
    17. return 0;
    18. }

    方法2:利用库的fixed和setpricision函数

    setpricision()接受一个整型参数,表示保留多少位有效数字;fixed(std::fixed)表示用于setpricision的有效数字针对的是小数点后的有效数字。这两个函数都是作用于cout, cin之类的IO流

    1. #include
    2. #include
    3. using namespace std;
    4. int main()
    5. {
    6. double a = 1.499;
    7. double b = 1.500;
    8. double c = 1.48;
    9. double d = 1.5;
    10. double n_a = -1.499;
    11. double n_b = -1.500;
    12. cout << fixed << setprecision(2) << a << endl; // 1.50
    13. cout << fixed << setprecision(2) << b << endl; // 1.50
    14. cout << fixed << setprecision(2) << c << endl; // 1.48
    15. cout << fixed << setprecision(2) << d << endl; // 1.50
    16. cout << fixed << setprecision(2) << n_a << endl; // -1.50
    17. cout << fixed << setprecision(2) << n_b << endl; // -1/50
    18. return 0;
    19. }

    - 需要得到四舍五入的结果

    要得到四舍五入小数点后的结果,我们可以将小数转换为整数来处理,然后再转换为小数。例如我们需要将1.2345这个数保留小数点后两位四舍五入,我们可以先将其乘以100转换为123.45,然后套用整数的方法来进行四舍五入,再将其除以100转换为小数。

    1. #include
    2. using namespace std;
    3. // 用于四舍五入
    4. int round_0 (double n)
    5. {
    6. // 若为负数,则先化为正数再进行四舍五入
    7. if (n > 0)
    8. return n - int(n) >= 0.5 ? int(n)+1 : int(n);
    9. else
    10. return -n - int(-n) >= 0.5 ? -(int(-n) + 1) : -int(-n);
    11. }
    12. int main()
    13. {
    14. double a = 1.2345;
    15. double b = 1.2355;
    16. double n_a = -1.2345;
    17. double n_b = -1.2355;
    18. a = round_0(a * 100.0) / 100.0;
    19. b = round_0(b * 100.0) / 100.0;
    20. n_a = round_0(n_a * 100.0) / 100.0;
    21. n_b = round_0(n_b * 100.0) / 100.0;
    22. cout << a << endl; // 1.23
    23. cout << b << endl; // 1.24
    24. cout << n_a << endl; //-1.23
    25. cout << n_b << endl; // -1.24
    26. return 0;
    27. }

  • 相关阅读:
    利用zk实现分布式锁&zk数据同步原理
    Python程序设计实例 | 条形码图片识别
    【前端】JavaScript —— WebAPI
    后端SpringBoot+前端Vue前后端分离的项目(一)
    安卓期末大作业——日记APP
    总结:Spring Boot之@Value
    Javaweb开发 利用servlet+jsp+jdbc+tomcat数据库实现登录功能
    005.用哈希查找算法查找七色光颜色【哈希查找算法】
    CVPR 2022 论文和开源项目合集
    视频教程下载:用ChatGPT的 API 开发AI应用指南
  • 原文地址:https://blog.csdn.net/Xavier_97/article/details/126931927