精华内容
下载资源
问答
  • 在写Sql 的时候遇到个问题,两个整数 int 类型相除,我希望保留位小数、问题解决 1、知识普及: select 10/3 -->3 select 10%3 -->1 select 11/4 -->2 select 11%4 -->3 / 符号是取整,% ...

    一、前言

        在写Sql 的时候遇到个问题,两个整数 int 类型相除,我希望保留两位小数。

    二、问题解决

    1、知识普及:

    select 10/3
    -->3
    select 10%3
    -->1
    
    select 11/4
    -->2
    select 11%4
    -->3

     / 符号是取整,% 符号是取余。在上面的例子中,清晰的展示了它们的作用。需要注意的是 / 取整符号是直接截断的,11除于4结果应该是2.75,取整后就是2,由此可看出它是不会四舍五入的。

     

    2、步入正题:

    方法有三种:cast、convert 和 round。这里用10除于3举例。

    (1)CAST函数

        比较常用的就是CAST函数了,这里就是先将 int类型的 10 转换成了 float ,再去除于3,得出的结果就有无限小数,第一种写法比较特别,刚开始我也没看懂,怎么会多了一个点?!直到看到第二种写法才恍然大悟,只是它将小数位省略不写而已。结果是一样的。

    select CAST(10*1./3 as decimal(8,2))
    -->3.33
    
    select CAST(10*1.0/3 as decimal(8,2))
    -->3.33

    (2)CONVERT函数

        这种功能上和cast 类似,就是写法不同而已。

    select CONVERT(decimal(8,2),10*1./3)
    -->3.33
    
    select CONVERT(decimal(8,2),10*1.0/3)
    -->3.33

    (3)ROUND函数

        最后就是ROUND函数了,保留是保留了,但保留的是两位有效的小数,后面的很多个零就是根据默认类型自动填充的。

    select ROUND(10*1./3,2)
    -->3.330000
    
    select ROUND(10*1.0/3,2)
    -->3.330000

    要去掉的话也方便,再丢回到前两个函数中转换一下即可,如:

    select CONVERT(decimal(10,2),ROUND(10*1.00/3,2)) 
    -->3.33

          这方法看似多此一举,但也有他的用处。CAST函数和CONVERT函数都是自动四舍五入的,而ROUND函数有一个参数,设置非0的数后,就会变成直接截断。这里拿11除于4来举例会比较清晰,如下:

    select ROUND(11*1.0/4,1)
    -->2.800000
    
    select ROUND(11*1.0/4,1,6)
    -->2.700000

          如果这个地方不是很理解,可以先参考我之前的一篇博客 SQLServer中 ROUND函数、CAST 和 CONVERT函数 的使用详解”。

          就先写到这,哈哈!一个小问题被我复杂化了,不喜勿喷。

     

    展开全文
  • 1.情景展示  double d = 1/10;  System.out.println(d);  返回的结果居然是0.0!... 在Java语言中,整数之间的除法运算,不管你的小数位有多少小数是几,统统舍弃,只返回整数数字!  第步:用do...
     

    1.情景展示

      double d = 1/10;

      System.out.println(d);

      返回的结果居然是0.0!这是怎么回事儿? 

    2.原因分析

      第一步:你会发现用运算结果也可以用int类型接收!

      没有报错,也就是说:

      在Java语言中,整数之间的除法运算,不管你的小数位有多少位,小数是几,统统舍弃,只返回整数位数字!

      第二步:用double类型接收为什么也可以?

      因为double类型的取值返回要大于int类型,所以属于向上类型转换,当然可以用比它大的容器接收啦(也就是可以直接进行转换 )。

      你用float类型或long类型接收也没有问题!

      第三步:为什么整数之间的除法运算,只返回整数位?

      因为在Java中,由运算结果,由被运算数的最高数据类型决定,也就是说:整数之间的运算,数据类型都为int类型,所以,返回的结果也为int类型。 

    3.解决方案

      掌握了这个原理,我们也就可以对症下药了!

      如果我们想要返回完整的运算结果 ,我们就需要将其中一个的数据类型转换成double类型或者float类型,而不是只改变接收运算结果的数据类型!

      方式一:将被除数转换成double类型

    double d4 = 100d/235886;
    System.out.println(d4);//4.2393359504167265E-4
    

      方式二:将除数转换成double类型

    double d5 = 100/235886d;
    System.out.println(d5);//4.2393359504167265E-4
    

      方式三:将被除数转换成float类型

    float f4 = 2358861f/235886;
    System.out.println(f4);//10.000004
    

      方式四:将除数转换成float类型

    float f5 = 2358861/235886f;
    System.out.println(f5);//10.000004
    

      连续运算

    // 连续运算也是如此
    int i4 = 1234567/1000/3600;
    System.out.println(i4);//0
    double d = 1234567d/1000/3600;
    System.out.println(d);//0.34293527777777777
    

      转换成long类型没用哦!

    long l = 100L/235886;
    System.out.println(l);// 0
    

      两个Long类型的数值进行除法运算

    System.out.println("long类型除法运算:" + 12345678910L/98765432110L);//0
    System.out.println("上升为double类型运算:" + 12345678910L/98765432110D);//0.12499999894953125
    System.out.println("上升为float类型运算:" + 12345678910L/98765432110F);//0.125

    4.扩展  

      Java除法运算向上取整。

      方式一:向上类型转换+Math.ceil()

    // 方式一:向上类型转换
    double d = 100D/235886;
    // 向上取整
    int ceil2 = (int)Math.ceil(d);
    System.out.println(ceil2);// 1
    

      方式二:整数位+(有余数整数+1)

    // 只保留整数位
    int floor = 100/235886;
    // 余数
    int remainder = 100%235886;
    // 向上取整
    int ceil = floor + (remainder > 0 ? 1 : 0);
    System.out.println("只保留整数位:" + floor + "," + (remainder > 0 ? "余数大于0" : "余数为0") + ",向上取整:" + ceil);// 只保留整数位:0,余数大于0,向上取整:1
    

    5.js的整数间的运算,会返回实际运算结果哦!

      console.log(1/10);//0.1

     

    写在最后

      哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

     相关推荐:

     

     

    转载于:https://www.cnblogs.com/Marydon20170307/p/10911049.html

    展开全文
  • 目录一、问题引出与求证、问题查阅与解决三、MATLAB如何修改计算结果保留的有效数字四、拓展——数值显示四、后记 一、问题引出与求证 今天,利用MATLAB编写乘同余法产生随机数相关代码时,遇到一个问题: (下图...

    一、问题引出与求证

    今天,利用MATLAB编写乘同余法产生随机数相关代码时,遇到一个问题:
    (下图仅截取部分代码片段)

    a=6/256
    b=6;
    c=a*b
    

    输出结果为:
    在这里插入图片描述
    再次运算:

    d=0.0234*6
    

    发现:
    在这里插入图片描述
    二者显然不相同。但是他们似乎是用相同的数0.0234和6进行相乘。结果为什么不相同呢?为了验证哪个计算出错,我又利用计算器进行了验证,结果非常amazing啊:
    在这里插入图片描述
    那第一个代码为什么会算出0.1406呢?我突然想到了一个点,是不是除法运算结果没有保留全部数值呢?
    一做验证,果然如此。
    在这里插入图片描述
    而用0.0234375*6,结果保留四位有效数字果然是0.1406。

    看来果然如此,MATLAB默认保留四位有效数字,其余位数省略,但是不消失。

    比如:

    a=6/256
    b=0.0234
    a==b
    

    结果显示,果然a和b并不相等:
    在这里插入图片描述

    二、问题查阅与解决

    经过大量资料查阅,只在这里找到部分答案:
    在这里插入图片描述

    “若为实数,则以保留小数点后4位的浮点型表示”

    经过再次从网上查阅资料,发现可以修改结果保留的有效数字,详细步骤如三:

    三、MATLAB如何修改计算结果保留的有效数字

    Step1:主页–>预设
    在这里插入图片描述

    Step2:打开“命令行窗口”,找到“文本显示”
    在这里插入图片描述
    Step3:修改数值格式与数值显示
    关于数值格式,共有12种,详见下表格:
    在这里插入图片描述
    显示格式只影响数值的显示方式,不影响它们在 MATLAB 中的存储方式。

    参考自:MATLAB官方文档

    当然,也可以使用format方法,链接如下:
    https://ww2.mathworks.cn/help/matlab/ref/format.html?s_tid=srchtitle

    四、拓展——数值显示

    数值显示有两个选项:

    • loose(默认)
      默认情况下,MATLAB 会在命令行窗口输出中显示空行。如:
      在这里插入图片描述

    • compact
      compact可以取消显示空行。如:
      在这里插入图片描述
      参考自:设置输出格式

    五、总结

    MATLAB中小数格式,默认以保留小数点后4位的浮点型表示,也可以进行手动设置;
    显示格式只影响数值的显示方式,不影响它们在 MATLAB 中的存储方式。

    六、后记

    如果各位有什么更容易的解决办法,欢迎在评论中给出,感激不尽~

    展开全文
  • 以上这篇python 除法保留小数点的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:浅谈Python里面小数点精度的控制pandas 小数位数 精度的处理...
  • 要求a/b后面的小数,首先a对b求余,余数乘10再b保留新的余数,除数就是第一个小数,新的余数乘10再b得到第二位小数… 这道题这样做可以拿到部分分数,但是如果n特别大的话,n一个一个减小会特别慢,运行会超时,...

    在这里插入图片描述
    题记

    这道题涉及到带余除法:
    要求a/b后面的小数,首先a对b求余,余数乘10再除b保留新的余数,除数就是第一个小数,新的余数乘10再除b得到第二位小数…

    这道题这样做可以拿到部分分数,但是如果n特别大的话,n一个一个减小会特别慢,运行会超时,所以先一次减10快速逼近小数点后第n位。

    #include <iostream>
    
    using namespace std;
    typedef long long ll;
    
    int main()
    {
        ll a,b,n;
        cin>>a>>b>>n;
        a%=b;
        while(n-10>0){
           a*=1e10;
           a%=b;
           n-=10;
        }
    
        for(int i=1;i<=n+2;i++){
            a*=10;
            if(i>=n)
                cout<<a/b;
            a%=b;
        }
        return 0;
    }
    
    
    展开全文
  • 因为没有电路bai,所以程序我就du没法给你写,给你个思路. ...第,你要进行显示,肯定要把各个都取出来,这里面肯定有一个取模运算,就是"%", 对于浮点型,不运行取模运算的,所以,你必须把浮点型转换成整
  • 文章目录一、四种除法二、取余运算三、斐波那契数的四种求法四、坐标变化的三角函数五、ufunc对象运算 一、四种除法 1、真除: 结果完全保留小数部分也保留 1)numpy.true_divide() 2)numpy.divide() 3)也可以...
  • C++_保留有效位数setprecision

    千次阅读 2019-05-13 16:13:19
    三:除法计算结果保留n位小数。 四:在计算过程中保留有效位数。 一:保留有效位数 setprecision(n): 功能:控制浮点数显示的有效数字个数 特点:四舍五入进行保留; 如果有效位数不够,不会自动补0...
  • BigDecimal在做devide除法运算时需要定义第个参数,用于确定保留位小数。否则如果除法的结果是无限小数的话就会抛出异常:java.lang.ArithmeticException: Non-terminating decimal expansion; no exact ...
  • 我们在做十进制正整数转换为进制正整数时,采用短除法来计算,同样的正小数的进制间转换也是相同方法,参考文章1 参考文章2 我们获取正小数的整数部分和小数部分,整数部分的转换同 transform_pos_int 处理,...
  • 这里用两种方式对10 / 3,四舍五入保留位小数做处理 一:将setScale()方法写在divide()方法里面 :将setScale()方法写在divide()方法外面 BigDecimal a = new BigDecimal(10); BigDecimal b = new BigDecimal(3)...
  • 如果是整数,后面保留位小数。每行最多输出76个字符。 题解:模拟除法,如果余数是第次出现,则代表第一次出现的位置到此为循环节,注意输出,注意输出格式,注意输出每行最多76个字符。学习了一下题解的写法,...
  • 一、题目链接: ... 、题目描述: 资源限制 时间限制:1.0s 内存限制:256.0MB ... 从前,有一只吃包子很厉害的猴子,它可以吃无数个包子...结果保留p位小数。 输入格式  输入1行,包含7个整数,分别表示吃不同包.
  • C++运算符和表达式运算符和表达式(一)算术运算符和算术表达式()练习练习1、求个位数练习2、求十位数练习3、整数除法运算,结果保留位小数练习4:反序输出三个数字练习5:求圆的周长和面积练习6:反序输出一...
  • Java学习第天 ** java中的运算符 - 算数运算符 - 赋值运算符 - 比较运算符(关系运算符...对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。 ** 赋值运算符 *符号...
  • 分tips

    2019-07-18 15:25:16
    分注意: 两套分的方式 1.r=mid,l=mid+1,mid=(l+r)>>1 2.l=mid,r=mid+1,mid=(l+r+1)>>1 用位运算避免用 / 时负数出现的问题...保留k位小数时 通常取eps=10^-(k+2) l + eps < r while (l + eps ...
  • / 是精确除法,结果都会保持小数部分。举例:1/2=0.5 四舍五入取整round, 向零取整int, 向下和向上取整函数math.floor, math.ceil 例子题目: 某个公司采用公用电话传递数据,数据是四的整数,在传递过程中是加密...
  • Python 运算符 python中运算符分为五大类:算术运算符、赋值运算符...由上图可以看出,Python中除法默认转型成float 且默认保留位小数。 赋值运算符 比较运算符 逻辑运算符 数字的逻辑运算 a...
  • 轮算法模拟试卷(2020.10.28) 这套试卷总体简单,主要有些思想自己...输入A,B,N,要求输出A/B的结果保留N位小数 /*算法思想:本质是就是要我们模拟手动进行除法运算。两数相除,计算余数,余数进位(即乘以1
  • 程序可以出带括号的正整数四则运算,支持分数,除法保留位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66,或保持分数形式:8/3 可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数...
  • 第一个参数是除数,第个参数代表保留位小数,第三个代表的是使用的模式。 BigDecimal.ROUND_DOWN:直接省略多余的小数,比如1.28如果保留1位小数,得到的就是1.2 BigDecimal.ROUND_UP:直接进位
  • java关于BigDecimal计算精度问题 BigDecimal temp = BigDecimal.ZERO;...、当需要做除法时 temp.divide(BigDecimal.valueOf(除数), 保留位数, BigDecimal.ROUND_HALF_UP)注意,保留位数为必填参数...
  • 写成如下格式就可以解决问题 BigDecimal num3 = num1.divide(num2,10,ROUND_HALF_DOWN); 原因是 BigDecimal 在做除法运算时,结果除不尽...第个参数 : 结果保留位小数 第三个参数 : 小数模式 四舍还是五入 ...
  • 设计的java计算器应用程序可以完成加法、减法、乘法、 除法运算,n次方/方根,括号,能显示每步的计算结果,...数的保留位小数以及进制、八进制、十进制、十六进制之间的 相互转换。具体参考windows附件下的计算器
  • java学习之路-基础语法-运算符

    千次阅读 2016-07-22 22:07:26
    运算符:运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。 1) 运算符 运算是直接对进制进行运算...对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数
  • Java&&BigDecimal类型

    2020-12-18 18:39:59
    Java&&BigDecimal类型一、四... ROUND_HALF_DOWN、 运算加法减法乘法除法 一、四舍五入保留位小数 1.ROUND_DOWN BigDecimal b = new BigDecimal("2.225667").setScale(2, BigDecimal.ROUND_DOWN); System.
  • 杭电 -- 1170

    2019-07-08 15:07:00
    题意及思路 题意:给出操作符 及 两个操作数,输出运算结果。 思路:接收三个元素,switch判断符号,分别进行不同操作即可。 踩坑点:这题虽然简单,但是...因此,并不能说咱们把除法操作的结果全部取两位小数...

空空如也

空空如也

1 2 3 4
收藏数 72
精华内容 28
关键字:

除法小数保留二位小数