精华内容
下载资源
问答
  • 算法如果要求将数据h精确到小数点后面的第n则需要对n+1进行运算方法是将该数乘以10的n+1次方后加5然后除以10并强制转换变量类型为长整型再将该数强制转换类型为浮点型再除以10的n次方 long t; t=(h*10n+1+5)/10;...
  • C语言】将一个浮点数四舍五入保留两位小数

    万次阅读 多人点赞 2019-09-13 00:25:49
    C语言】将一个浮点数四舍五入保留两位小数 第一次做这个题目的时候,我用了一个比较傻的方法:利用强制类型转换可以得到该浮点数的整数部分,然后分别取出十分位、百分位、千分位上的数字,判断千分位上的数字是否...

    【C语言】将一个浮点数四舍五入保留两位小数

    第一次做这个题目的时候,我用了一个比较傻的方法:利用强制类型转换可以得到该浮点数的整数部分,然后分别取出十分位、百分位、千分位上的数字,判断千分位上的数字是否大于等于5,若是则百分位进一,再将这几个数字乘以系数后相加即可

    关于如何获取某一位上数字的方法在另一篇博客中有详细说明获取正数或浮点数某一位上的数字

    #include <stdio.h>
    
    int main(int argc, const char * argv[]) {
        
        double f = 123.4567;
        //获得整数部分
        int a = (int)f;
        
        //获取十分位部分
        int b = (int)(f*10)%10;
        //获取百分位部分
        int c = (int)(f*100)%10;
        //获取千分位部分
        int d = (int)(f*1000)%10;
        
        //判断千分位是否大于等于5
        if (d >= 5) {
            //是,百分位进一位
            c ++;
        }
        
        //乘以系数后相加
        double e = a + b*0.1 + c*0.01;
        
        printf("a = %d\n",a);
        printf("b = %d\n",b);
        printf("c = %d\n",c);
        printf("d = %d\n",d);
        printf("e = %f\n",e);
        
        return 0;
    }
    

    这个方法显然是很傻的(看见题目的时候脑子没转过弯来),下面介绍比较常用的方法

    1. 如何进行四舍五入

      假设要从某一位进行四舍五入,很自然能想到判断它后一位上的数字是否大于等于5,其实可以直接给这个数字加上5,就能跳过判断的过程了

      例如

      100.1123 四舍五入保留整数: 100.1 + 0.5 = 100.61 取整后为100

      100.7123 四舍五入保留整数: 100.7 + 0.5 = 101.21 取整后为101

      但是,假如要进行小数位的四舍五入,光利用这个特性是不够的,例如

      100.1123 四舍五入保留两位小数:100.1123 + 0.005 = 100.1173

      100.1173 四舍五入保留两位小数:100.1173 + 0.005 = 100.1253

      怎样将百分位后的数去掉呢?

    2. 如何处理小数位的四舍五入

      可以利用强制转换为int型时,截断的特性来实现

      例如

      int a = 0.75 实际上 a 赋值为0,小数部分被截断了

      利用这个特性,可以将要保留的数据挪到整数位,然后强制转换为int型,再转回所求的数字即可

      #include <stdio.h>
      int main(int argc, const char * argv[]) {
          
          double f = 123.4567;
          
          //1.进行四舍五入
          f = f + 0.005;
          //2.将要保留的数据挪到整数位,再取整
          int temp = f*100;
          //一步到位
          //int temp = (f+0.005)*100;
          //3.转为所需数字
          f = temp/100.0;
          
          printf("f = %f\n",f);
          
          return 0;
      }
      

      当然,也可以先转为int型再进行四舍五入,结果都是一样的

      #include <stdio.h>
      int main(int argc, const char * argv[]) {
          
          double f = 123.4567;
          
          //取整的同时四舍五入
          int temp = (int)(f*100+0.5);
          //转为所需数字
          f = temp/100.0;
          
          printf("f = %f\n",f);
         
          return 0;
      }
      

      由于float类型的有效数字为6~7位,可能存在六位以后的数据不正确的情况,所以为了保证精度,在需要较长的浮点数时最好使用double型

    展开全文
  • 怎么实现用C 语言四舍五入保留小数点后7 位小数,以及类似的问题,谢谢
  • C++负数小数如何不按四舍五入保留两位小数。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
  • 四舍五入保留两位小数,不够位数的以0代替 2020/08/04 function keepTwoDecimalFull(num) { var result = parseFloat(num); if (isNaN(result)) { alert('传递参数错误,请检查!'); return false; } result...

    四舍五入保留两位小数,不够位数的以0代替

    2020/08/04

    function keepTwoDecimalFull(num) {
    	var result = parseFloat(num);
    	if (isNaN(result)) {
    		alert('传递参数错误,请检查!');
    		return false;
    	}
    	result = Math.round(num * 100) / 100;
    	var s_x = result.toString();
    	var pos_decimal = s_x.indexOf('.');
    	if (pos_decimal < 0) {
    		pos_decimal = s_x.length;
    		s_x += '.';
    	}
    	while (s_x.length <= pos_decimal + 2) {
    		s_x += '0';
    	}
    	return s_x;
    }
    
    展开全文
  • 在开发中我们经常需要将数值数据进行四舍五入保留相关小数。我总结了常用的三种转换方式及其对应的特点。 方式一:使用Math.Round(double,int) //常规方法:使用Math.Round(), double num1 = Math.Round(2.455,2);...

    在开发中我们经常需要将数值数据进行四舍五入,保留相关小数。我总结了常用的三种转换方式及其对应的特点。

    方式一:使用Math.Round(double,int)
    //常规方法:使用Math.Round(),
    double num1 = Math.Round(2.455,2);//得到的值是2.46
    double num2 = Math.Round(2.445, 2);//得到的值是2.44,实际生活中我们认为应该得到2.45
    double num3 = Math.Round(2.454,2);//得到的值是2.45
    double num4 = Math.Round(2.456, 2);//得到的值是2.46
    

    方式一,是我们在实际开发中经常使用的进行四舍五入的方法,但是再使用的时候一定要注意,C#中的Round()不是我们中国人理解的四舍五入,是老外的四舍五入,是符合IEEE标准的四舍五入,具体是四舍六入,如果遇5则前一位如果是偶数则舍掉,如果是奇数则进一位

    方式二:使用Math.Round(double,int,MidpointRounding)
    //方法二:使用Math.Round()的重载函数,四舍五入,保留两位数据
    double num5 = Math.Round(2.455,2,MidpointRounding.AwayFromZero);//得到的值是2.46
    double num6 = Math.Round(2.445,2,MidpointRounding.AwayFromZero);//得到的值是2.45
    double num7 = Math.Round(2.454,2,MidpointRounding.AwayFromZero);//得到的值是2.45
    double num8 = Math.Round(2.456,2,MidpointRounding.AwayFromZero);//得到的值是2.46
    

    这种方式才是我们中国人理解的四舍五入。

    方式三:使用.tostring(“0.00”)进行格式化
    //方式三:使用double.tostring("0.00")进行格式化
    double num9 = 2.455;
    double num10 = 2.445;
    double num11 = 2.456;
    double num12 = 2.454;
    
    string strNum9 = num9.ToString("0.00");  //得到的值是"2.46"
    string strNum10= num10.ToString("0.00"); //得到的值是"2.45"
    string strNum11= num11.ToString("0.00"); //得到的值是"2.46"
    string strNum12= num12.ToString("0.00"); //得到的值是"2.45"
    

    备注:如需保留1位小数,则.ToString(“0.0”)即可,3位小数以此类推

    方式四:增加0.*5

    如果我们需要对一个数四舍五入,保留2位小数,又需要2.445这样的数值保留后为2.45而不是2.44,我们还可以给这个数增加0.005;

    //方式三:增加0.005
    double num13 = 2.445;
    double num14 = 2.455;
    double num13To = Math.Round(num13 + 0.005,2);//得到的结果是2.45
    double num14To = Math.Round(num14 + 0.005, 2);//得到的结果是2.46
    

    备注:
    1.如果是保留3为小数则添加0.0005即可,其它依次类推。
    2.此法也适用于Convert.ToInt32(),进行int数据转换。

    总结: 综合比较上述四种方式,可以看出方式二是最适用最科学的方式。

    展开全文
  • C++四舍五入保留位小数

    方法一:

    #include <iostream>
    #include <iomanip>
    using namespace std;
    int main(){
    	double x;
    	cin>>x;
    	cout<<fixed<<setprecision(2)<<x<<endl;
    	return 0;
    } 
    

    方法二:

    #include <cstdio>
    using namespace std;
    
    int main(){
    	double x;
    	scanf("%lf",&x);
    	printf("%.2lf",x);
    	return 0;
    }
    
    展开全文
  • /****************四舍五入保留2位小数(不够位数,则用0替补)**********************/ if(key=="totolMoney" || key=="royalty"){ //var result=parseFloat(obj[key]+".10"...
  • double类型四舍五入保留两位小数

    千次阅读 2018-04-28 11:01:40
    //#.00 表示两位小数    DecimalFormat df =  new  DecimalFormat( "#0.00" );   System.out.println(df.format(f));   }      /**     * String.format打印最简便     */     public   ...
  • 例题:请补充函数,该函数的功能是求一维数组a[N]的平均值,并对所得结果进行四舍五入保留两位小数。 例如,当a[10]={ 23.1,12.3,5.3,56.4,10.0,13.7,24.5,42,1.2,9.9}时,输出结果为:average=19.840000。 请勿改动...
  • 请编写一个函数float fun(double h),函数的功能是对变量h中的值保留两位小数,并对第三位进行四舍五入(规定h中的值为正数)。 二、分析解答 此题主要考察浮点数的运算,涉及到浮点数的精度,宽度等知识。 ...
  • 网上的方法: 很简单,假如你有一个float型变量a,其值为1.23456,而你只想...如果要保留四位小数,就把1000都换成10000,依次类推。 (以上来源:https://zhidao.baidu.com/question/22834864.html) 其实,用C语...
  • printf("四舍五入结果:%.2f\n",a); return 0; } 结果:123.46 int main() { double a=4.185; int b; a*=100; a+=0.5; b=(int)a; a=b/100.0; printf("四舍五入结果:%.2f\n",a); return...
  • 华氏温度转换为摄氏温度转换公式c=5/9*(F-32) F为华氏温度C为摄氏温度保留2位小数,2位小数点后四舍五入样例: 输入-40 输出-40.00#include &lt;stdlib.h&gt; #include &lt;string.h&gt; #include ...
  • 众所周知,printf可以格式化输出,保留指定小数位数 %.kf k是有效位数,并且是四舍五入的。但是,在include<stdio.h>和include<iostream>个不同的头文件下,却发生了一个很奇怪的现象。 实验环境DEV,...
  • C语言小数四舍五入输出可控制位数

    万次阅读 多人点赞 2017-01-05 10:31:50
    本文章说明怎样使得你能保留小数点后几四舍五入)及其可控制的位数的实现: #include int main() { double a = 423.43654; a = int(a*100+0.5)/100.0; //到这的a值变成了423.440000 printf("%lf\n...
  • System.out.printf(“%.2f”, average);//.2f表示保留两位小数,average是double型变量
  • 为什么 329.835 会变成 329.83,529.835 会变成 529.84,就是因为在内存中的数字是用二进制表示的...int((a*1000+5)*0.001) 的意思是取小数,但是 basic 语言的语法,不是 c 语言的语法,而且也犯了一个错误...
  • C++四舍五入保留N位小数

    万次阅读 多人点赞 2016-09-04 20:55:15
    最近遇到这个问题,不难吧,不过搜网上的东西,没看到比较合心水的答案,自己搞了种做法,请君侧耳为我听。
  • 1.printf("%3.0f",floatNum):不保留小数 说明:%3.0f表明待打印的浮点数(floatNum)至少占3个字符宽,且不带...2.printf("%6.2f".floatNum):保留两位小数 说明:%6.2f 表明待打印的数(floatNum)至少占6个字符
  • C语言实现保留位小数并对最后一位四舍五入方法如下: 假如你有一个float型变量a,其值为1.23456,而你只想保留位小数,也就是希望得到1.235,只需要令:a = (int)(1000.0 * a + 0.5) / 1000.0即可.如果要保留...
  • 如:A=50.5363,四舍五入保留两位小数. 先移动小数点位置 A*100=5053.63; 再round(5053.63)=5054; 再还原A的小数点位置5054/100=50.54; 这里小数点向右移动两位用到用到*100,最后四舍五入取整后再把小数位...
  • 编写函数double fun(double h),实现功能:使变量中的h保留两位小数,并对第三位四舍五入,作为函数值返回。 代码实现: #include <stdio.h> #include <conio.h> #include <stdlib.h> double fun ...
  • 做python实验时碰到这么一道题:输入三个浮点数,求它们的平均值并保留 1 位小数,对小数后第二位数进行四舍五入,最后输出结果错误示范因为涉及到四舍五入,随便搜了一下,发现了好多博客都用round(),就直接拿来用了...
  • C# 保留两位小数,不四舍五入

    千次阅读 2020-02-20 19:34:35
    今天客户反馈了个问题,说界面上数字显示有误...需求就是保留两位小数,但不要四舍五入,也就是直接砍掉不需要的数字。 网上查到一个方法,可用:https://www.cnblogs.com/xhjd520/archive/2009/06/24/1509982.html...
  • mport java.text.DecimalFormat; DecimalFormat df = new DecimalFormat("######0.00"); double d1 = 3.23456 double d2 = 0.0; double d3 = 2.0;...java保留两位小数问题: 方式一: 四舍...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,170
精华内容 6,068
关键字:

c语言四舍五入保留两位小数

c语言 订阅