精华内容
下载资源
问答
  • 【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型

    展开全文
  • 因为工作需要,价格处理的时候往往是两位小数需要换算成分,如:16.33元换算为1633分,直接乘以100也就行了的,但是又使用了个转换为整数类型的函数intval() 这下子结果就不对了。  可以看出原本结果应该是1633的...

    因为工作需要,价格处理的时候往往是两位小数需要换算成分,如:16.33元换算为1633分,直接乘以100也就行了的,但是又使用了一个转换为整数类型的函数intval() 这下子结果就不对了。
          可以看出原本结果应该是1633的,但是使用了函数intval() 之后结果居然变为了1632了,这是由于浮点类型的数字不能在不丢失一点儿精度的情况下通过内部二进制转换得到结果的,换句话说就是浮点类型的计算都会丢失精度的。 
    该函数的解决方法手册上也给出了,就是需要先使用strval() 函数将变量转成字符串类型。
        还有就是直接使用类型转换也是不行的,如:(int)($pay_price*100) 结果也会损失精度的。 

    展开全文
  • //两数相乘保留两位小数 public static String multiply(String num1, String num2) { BigDecimal b1 = new BigDecimal(num1); BigDecimal b2 = new BigDecimal(num2); BigDecimal bigDecimal = b1.multiply(b2)...
        //两数相乘保留两位小数
        public static String multiply(String num1, String num2) {
            BigDecimal b1 = new BigDecimal(num1);
            BigDecimal b2 = new BigDecimal(num2);
            BigDecimal bigDecimal = b1.multiply(b2).setScale(2, BigDecimal.ROUND_DOWN);//截取结果两位
            // 不足两位小数补0
            DecimalFormat decimalFormat = new DecimalFormat("0.00");
            return decimalFormat.format(bigDecimal);
        }

    展开全文
  • 而我们的需求是计算出百分比,并保留小数点后两位。网上的做法也有很多,这里我随手记录一下。 需求:计算两个整型相除之后的结果,结果形式为百分数形式,并且保留小数点后两位。上代码 public String numFormat.....

    之前coding的时候,有涉及到计算百分比,然后就想当然的采用a/b,然后后面加一个%的这种形式。然后结果并不是自己预期的百分之多少,而是直接就是0,这种计算方式是向下取整。而我们的需求是计算出百分比,并保留小数点后两位。网上的做法也有很多,这里我随手记录一下。

    需求:计算两个整型相除之后的结果,结果形式为百分数形式,并且保留小数点后两位。上代码

    public String numFormat(int numerator,int denominator){
            float numeratorf = (float)numerator;//转换成浮点型
            float denominatorf = (float)denominator;
            NumberFormat nt = NumberFormat.getPercentInstance();//获取百分数实例
            nt.setMinimumFractionDigits(2);
            
            return nt.format(numeratorf/denominatorf);//得到结果
        }

    展开全文
  • JS保留最多两位小数

    千次阅读 2019-11-14 17:03:04
    Math.round(num * 100) / 100 原理就是: Math的round方法是取到整数的四舍五入. 乘以100, 相当于取到小数点后两位的四舍五入近似数. 再除以百, 如果有小数的, 就会保留小数位, 没有小数的, 就直接显示整数 ...
  • 小程序保留两位小数方法

    千次阅读 2019-04-10 11:32:06
    1.保留小数点后几位小数,直接用.toFixed()即可.括号内的数字表示保留的位数.如果是整数,就会不上0, 2.获取几位数 toPrecision() 方法:指定要保留的小数位数(0.1+0.2).toFixed(1) = 0.3;这个方法toFixed是...
  • java的float浮点型数据保留两位小数

    千次阅读 2020-01-06 15:36:21
    java的float类型保留小数的其中种方法:DecimalFormat和Math.round()。 1. DecimalFormat:(String java.text.NumberFormat.format(double number)方法) DecimalFormat df1 = new DecimalFormat("#.00"); ...
  • //取一位整数和两位小数 System.out.println( new DecimalFormat( "0.00" ). format ( pi )) ;//3.14 //取两位整数和三位小数,整数不足部分以0填补。 System.out.println( new DecimalFormat( "00.000" ). ...
  • 在js中,计算两位小数或者一位小数一位整数,把它们相加或者相乘,要得到的结果也是小数,可以将其放大100倍计算后再除100例:var a = 3; var b = 2.40求a*bb*100*a/100 =7 --&gt;parseFloat(b*100*a/100)=7.2...
  • 项目中遇到小数相似度(业务给过来是小数)需要web界面以百分数的形式表示,并且保留两位小数。 直接上代码。 var nval = 0.12345; var percent = (Math.round(nval*10000))/100+'%'; 说明: 1.Math.round(num)...
  • java语言输出小数点后保留一位小数

    千次阅读 2020-08-08 20:58:56
    给定个整数相除,要求输出结果保留一位小数,且计算结果一位小数位数直接保留,其他位直接舍去。 比如,计算结果为: 2.89 则应输出2.8 2.84 则应输出2.8 也就是不按照四舍五入的标准输出。 代码如下: int a; int...
  • 浮点类型保留两位小数的方法 import java.text.DecimalFormat; public class Test { public static void main(String[] args) { double num = 102.1375; double ans = formatDouble1(num); System.out.println...
  • JAVA-保留两位小数的方法 package Text; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DecimalFormat; import java.text.NumberFormat; public class tset { /** * ...
  • php保留两位小数

    2019-10-01 16:36:03
    1.不进位的情况 比如3.149569取小数点后两位,最后两位不能四舍五入。...因此,去小数点后两位,需要先乘以100,然后舍去取整,再除以100,即: $a=floor(3.149569*100)/100 计算百分比 ...
  • BigDecimal contribute = (new BigDecimal(map.get("amount").toString()).divide...100要先乘以整数,否则放到除完后再*100,则会出现没有保留两位小数的情况; 修改后: igDecimal contribute = (new BigDecimal(m.
  • php向下保留两位小数有以下几个办法 ...、传统的保留两位小数种,使用round()函数 echo round($num,2); //1.27 round会默认使用四舍五入的,与我们的需求不符 第二种,利用sprintf格式化字符串 ...
  • 保留一位小数

    2021-06-30 15:50:57
    如1.65*10=16.5,取整后为17,再除以10就得到了1.7,保留1位小数又能够四舍五入了,同理保留两位小数也一样先乘以100取整后再除以100就行了。 自己用于(BMI): let h = Number(res.h) //身高 let w = Number...
  • /** * 数相除值扩大100倍后保留一位小数 * @param a 被除数 * @param b 除数 * @return */ private static double divide(int a,int b){ double aa = new BigDecimal((float) a / ...
  • Math.Round()函数,能够对个浮点数进行四舍五入,但是返回的结果是个整数,无法精确到小数点后,比如0.123,Math.round()返回0。...最简单实现的方法是,假设我要对0.409进行四舍五入并保留两位小...
  • Java 除法保留N位小数,计算百分比

    千次阅读 2019-04-20 16:44:39
    java 两个整数相除保留两位小数: https://blog.csdn.net/qq_26676207/article/details/53375263 1、方法1 int a=1099; int b=93; double f1 = new BigDecimal((float)a/b).setScale(2, BigDecimal.ROUND_HALF_...
  • 在做算法题的时候,经常可能会出现保留几位小数的情况。对于”直接舍掉2位后的小数“的方案有如下种: 1、作为整数输出。如12.12345: 先乘以100,得到1212.345; 然后强转为int就得到了1212; 最后除以100.0...
  • 保留两位小数四种方法:String.format(),BigDecimal.setScale(),NumberFormat.format(),DecimalFormat.format()详解
  • 保留两位小数的四舍五入

    千次阅读 2019-07-10 18:02:29
    在项目中遇到计算费用的需求,数值需要是保留两位小数的四舍五入。 四舍五入的函数为Math.Round(),保留小数位的方法是Number.toFixed()。 但是这两种方法在实际应用中各自会存在问题: Math.Round()函数是对个...
  • 用法、 这种方法大家都司空见惯了,这里的value就是3 <template> <div>{{value}}</div> </template> <script> export default { data(){ return { num...
  • mysql保留两位有效小数

    千次阅读 2017-10-20 16:24:48
    select CONVERT(23.467362636,DECIMAL(10,2)) SELECT ROUND(23.467362636,2)
  • js四舍五入并保留两位小数

    万次阅读 2019-05-13 17:41:43
    Math.Round()函数,能够对个浮点数进行四舍五入,但是返回的结果是个整数,无法精确到小数点后,比如0.123,Math.round()返回0。...最简单实现的方法是,假设我要对0.409进行四舍五入并保留两位小...
  • 关于double,float,等那些个小数类型的数字如何保留2位小数,如何取整,按要求保留小数,如何四舍五入,如何向上取整,如何向下取整。各种姿势的格式化小数。我这做个总结。
  • BigDecimal一共有多种够造方法,让我先来看看其中的种用法: 第种:BigDecimal(double val) 第二种:BigDecimal(String val) //通常采用这种方式 来看看BigDecimal的四则运算: BigDecimal的四则运算 加法 ...
  • 为了方便说明,直接截取个sql: round(if(a.days=0,0,a.cnt/a.days*1.0),2) dayAvgCnt 假设这个daysint类型,结果是31天;beforeCnt也是int的类型,结果是99。那个这个计算结果永远是 3.0 。 round(if(a.days=0,0,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,137
精华内容 7,254
关键字:

一位小数乘以两位小数