zoukankan      html  css  js  c++  java
  • c++ 如何实现保留小数并 且 不进行四舍五入

    以保留2位小数为例,代码如下:
    #include <iostream>
    #include <iomanip>
    using namespace std;

    int main()
    {
        double a;
        cin>>a;
        cout<<setiosflags(ios::fixed)<<setprecision(2)<<a<<endl;//fixed为实数输出,若改为scientifitic则是科学技术法输出;setprecision(2)此处表示设置精度为2
        return 0;
    }

    #include "iostream"
    #include "math.h"
    using namespace std ;
    int main()
    {
    float a,b,c,s,p;
    scanf("%f%f%f",&a,&b,&c);
    if(((a+b)>c)&&((a+c)>b&&((b+c)>a)))
     
    {
               p=(a+b+c)/2;
       s=sqrt(p*(p-a)*(p-b)*(p-c));
     
    printf("面积%2f ",((int)(s*100+0.5))/100.0f);
     
    }
     
    else
                      {printf("这个不是三角形");
    }
    return 0 ;
    }
    追问:
    C语言不是很懂,可以用C++吗,主要的是四舍五入不懂,请指教
    回答:
    额,c++是完全兼容c语言的,你把它当做c++源代码编译也是可以的 四舍五入的主要思想就是利用c++语言特性,当浮点型向整形转换的时候会产生“截断”现象",那么,你此时可以将进行摄入,舍入的位 通过乘以或者除以十的n 次方的方法挪移到小数点后面的第一位,然后将它加0.5 进行舍入,完成后再截断然后 除以或者乘以 十的n 次方进行还原  例如 12.345 进行保留两位小数的舍入 则,先乘以100 得到 1234.5 之后把它加0.5得到 1235.0  ,截断(使用强制类型转换)得到1235 最后除以100 得到 12.35

    发现了C++的格式化输出可以四舍五入地保留小数
    首先我们设置cout.setf(ios::fixed);
    setf是setflag的缩写,MSDN解释为Sets the specificed flags。呵呵,估计是和C++的封装有关吧。
    然后我们设置cout.prevision(2);这个是保留两位小数,四舍五入
    我们可以用以下这个程序进行测试
    #include<iostream>
    using namespace std;
    int main()
    {
    float a=3.1456;
    cout.setf(ios::fixed);
    cout.precision(2);
    cout<<a<<endl;
    return 0;
    }

    #include <iostream>
    #include <iomanip>
    #include <math.h>
    using namespace std;
    int main()
    {
       float a;
        while(cin>>a)
        {
            a=floor(a*100.0)/100.0;
            cout.precision(2);        //输出小数点后两位
            cout<<setiosflags(ios::fixed)<<setw(2)<<a<<endl;
        }
        return 0;
    }
    #include<iostream>
    #include<iomanip>
    #include <math.h>
    using namespace std;
     
    int main()
    {
       double f,c;
       cout<<"请输入一个小数:";
       cin>>f;
       f=floor(f*100.0)/100.0;
       cout<<setiosflags(ios::fixed);
       cout.precision(2);        //输出小数点后两位
       cout<<"不四舍五入,保留2为小数:"<<f<<endl;
    }
  • 相关阅读:
    bzoj3675 [Apio2014]序列分割
    bzoj4010 [HNOI2015]菜肴制作
    bzoj4011 [HNOI2015]落忆枫音
    bzoj100题
    JSP—内置对象
    集合框架—常用的map集合
    集合框架—HashMap
    集合框架—代码—用各种集合进行排序
    集合框架—2种排序比较器
    array
  • 原文地址:https://www.cnblogs.com/2014acm/p/3887388.html
Copyright © 2011-2022 走看看