精华内容
下载资源
问答
  • 需要注意的是 / 取整符号是直接截断的,11于4结果应该是2.75,取整后就是2,由此可看出它是不会四舍五入的。 2、步入正题: 方法有三种:cast、convert 和 round。这里用10于3举例。 (1)CAST函数 比较常用的...

    一、前言

        在写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函数 的使用详解”。

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

     

    展开全文
  • el表达式整数除法保留小数

    千次阅读 2018-10-23 16:23:18
    由于数据库中保留的金额单位是元,页面要求展示成万元,所以想在页面上做一个除法操作: <td><fmt:formatNumber maxFractionDigits="6" value="${item.contractAmount/10000}...

    由于数据库中保留的金额单位是元,页面要求展示成万元,所以想在页面上做一个除法操作:

    <td><fmt:formatNumber maxFractionDigits="6" value="${item.contractAmount/10000}"></fmt:formatNumber> </td>

    用 maxFractionDigits="6"  来实现只保留六位小数的功能

    但是实际上这么操作是不生效的,EL表达式的整数除法会直接将数值取整。

    这里应该写成

    <td><fmt:formatNumber maxFractionDigits="6" value="${item.contractAmount*0.0001}"></fmt:formatNumber> </td>

    即用*0.0001来代替/1000的操作

     

    展开全文
  • 由于很多时候题目需要处理100位的整数,这样远远超过了C++能表示的范围,如果你是java,可以使用java中的专门处理多位数据的类。这里可以使用字符串运算...//字符串除法 string Divide(string str,int x){ int remai

    由于很多时候题目需要处理100位的整数,这样远远超过了C++能表示的范围,如果你是java,可以使用java中的专门处理多位数据的类。这里可以使用字符串运算的方法。之类题目会出现在进制运算中,一个多位字符串乘除一个整数。下面话不多说直接上代码。

    //字符串运算
    #include<iostream>
    #include<string> 
    using namespace std; 
    //字符串除法 
    string Divide(string str,int x){
    	int remainder=0;//需要保存余数 
    	for(int i=0;i<str.size();++i){
    		int current=remainder*10+str[i]-'0';
    		str[i]=current/x+'0';
    		remainder=current%x; 
    	}
    	int pos=0;//查找首个非0下标 
    	while(str[pos]=='0'){
    		pos++;
    	}
    	return str.substr(pos);//删除前置的多余0 
    }
    //字符串乘法
    string Multiple(string str,int x){
    	int carry=0;
    	for(int i=str.size()-1;i>=0;--i){
    		int current=x*(str[i]-'0')+carry;
    		str[i]=current%10+'0';
    		carry=current/10;
    	}
    	if(carry!=0){
    		str="1"+str;
    	}
    	return str;
    } 
    int main()
    {
    	string str;
    	cin>>str;
    	cout<<Divide(str,2)<<endl;
    	cout<<Multiple(str,1)<<endl;
    	return 0;
    }

    结果展示:

    展开全文
  •  根据提供的毫秒数进行除法运算,如果将毫秒数转换成小时,小时数不为0,则只取整数位,依此类推... 2.情况分析  可以使用3个函数实现  Math.floor(num) 只保留整数位  Math.rint(num) 余数四舍五入  ...
     

    1.情景展示

      根据提供的毫秒数进行除法运算,如果将毫秒数转换成小时,小时数不为0,则只取整数位,依此类推...

    2.情况分析

      可以使用3个函数实现

      Math.floor(num)   只保留整数位

      Math.rint(num)     余数四舍五入

      Math.ceil(num)     取整位,再+1

      举例:

    double num = 3.1415926;
    System.out.println(Math.floor(num));// 3.0
    System.out.println(Math.rint(num));// 3.0
    System.out.println(Math.ceil(num));// 4.0
    

      网上取整的例子到这就结束啦,都说了只取整数位,返回的是一个double类型的数字,所以,还需要强转成整数。

      这次是正确答案!

    double num = 3.1415926;
    System.out.println((int)Math.floor(num));// 3
    System.out.println((int)Math.rint(num));// 3
    System.out.println((int)Math.ceil(num));// 4  

      2019/05/23 补充:

      Java整数之间的除法运算,默认只返回整数位,也就相当于Math.floor()函数了。

      方式四:

    double num = 3.1415926;
    // 直接使用int进行强制转换
    System.out.println((int)num);//3
    num = 3.789;
    System.out.println((int)num);//3
    // 整数运算,默认将运算结果强制转换成了整数(只保留整数位)
    int i4 = 1/10;
    System.out.println(i4);//0
    

     

    3.解决方案

    // 还差多长时间执行,单位:毫秒数
    long exeTime = 1234567;
    // 时间单位
    String timeUnit = "";
    // 首次执行剩余时间
    int remaTime = 0;
    
    if (Math.floor(exeTime/1000/3600) > 0) {
    	remaTime = (int)Math.floor(exeTime/1000/3600);
    	timeUnit = "小时";
    } else if (Math.floor(exeTime/1000/60) > 0) {
    	remaTime = (int)Math.floor(exeTime/1000/60);
    	timeUnit = "分钟";
    } else {
    	remaTime = (int)Math.floor(exeTime/1000);
    	timeUnit = "秒";
    }
    
    System.out.println("启动定时器...SbptAction...距离任务执行还有" + remaTime + timeUnit + "!"); 

    4.问题扩展

      这样写,有一个问题,如果你的项目使用了SonarLint代码检测工具,原生的代码检测会报错。 

      意思是说:这样的算法很简单,根本不需要调用取整函数,就能知道结果。属于严重错误级别。

      如何规避这个错误检测规则?

    double hours = exeTime/1000/3600;
    double minutes = exeTime/1000/60;
    double seconds = exeTime/1000;
    
    if (Math.floor(hours) > 0) {
    	remaTime = (int)Math.floor(hours);
    	timeUnit = "小时";
    } else if (Math.floor(minutes) > 0) {
    	remaTime = (int)Math.floor(minutes);
    	timeUnit = "分钟";
    } else {
    	remaTime = (int)Math.floor(seconds); 
    	timeUnit = "秒";
    }
    

      使用上述代码进行替换,就不会报严重错误了!

    5.最佳解决方案

      当我知道Java整数之间的除法运算,默认只返回整数位时,才恍然大悟,上面的校验规则报错的原因:

      因为运算结果本身返回只有整数位,虽然结果用double接收的,但其本质仍然是个整数,

      所以,就没有必要调用Math.floor()来只取整数位了,直接强制转换成int就可以了!

    // Java整数间的除法运算,默认只保留整数位
    double hours = exeTime/1000/3600;
    double minutes = exeTime/1000/60;
    double seconds = exeTime/1000;
    
    // hours,minutes,seconds的结果只可能为0.0/1.0/2.0等(即小数位永远为0),不可能为:0.1/1.1/2.1 if (hours > 0) { remaTime = (int)hours; timeUnit = "小时"; } else if (minutes > 0) { remaTime = (int)minutes; timeUnit = "分钟"; } else { remaTime = (int)seconds; timeUnit = "秒"; }

     

    写在最后

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

     相关推荐:

     

     

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

    展开全文
  • SQL语句内做除法得出百分比

    千次阅读 2018-10-26 15:36:00
    保留两位小数点 SELECT ROUND(CAST(field1 AS DOUBLE)/field2, 2) * 100 FROM TB; 不保留 SELECT CAST(field1 AS FLOAT)/field2 * 100 FROM TB 然後再頁面顯示時再加上“%” 转载于:...
  • 引入:为什么不在投影除法后裁剪?为什么能用齐次坐标进行裁剪使用齐次坐标裁剪的步骤 2. 引入:为什么不在投影除法后裁剪  在齐次空间对顶点和线裁剪是如今图形学管线进行裁剪的标准做法。一个世界坐标系下点经过...
  • ,如何自动实现对他们的除法并显示出来这两个数相除得5.5? ``` var a = {ma}; var b = {mx}; var c = a/b; document.write(Math.round(num * 10) / 10) ``` 这个JavaScript需要配一个body,不知道...
  • 广告展示:该广告在设定时间范围内的展示数量,也可以理解为曝光,广告在页面上曝光显示的次数,显示一次记为一个pv,被一个用户看到记为一个uv。...具体去pv还是uv做除法,看实际应用时的衡量维度。 ...
  • 欧几里得辗转相除

    2014-02-11 11:16:13
    在我们编程中用的最多方法就是转相除法了,转相除法是古希腊求两个正整数的最大公约数的也叫欧几里德算法,用较大的数除以较小的数,结果的余数和被除数构成新的一对数,继续做上面的除法,直到大数被小数求尽,...
  • 深入ES6 (四) 字符串的括

    千次阅读 2017-04-14 15:06:42
    本章把重点放在ES6对对象方法的括上,至于字符Unicode表示的加强,则不打算详细展开。本章主要包括: 模板字符串与标签模板 字符串括方法 字符的Unicode表示(简介) 4.1模板字符串与模板标签模板...
  • 计算机设计大赛-校赛展示

    千次阅读 2018-04-13 16:49:44
    我们采用的是分治模型,首先计算一个词到一个标签集的距离,然后根据标签的重要程度加权平均获得标签集到标签集的距离。 1在形成标签集到计算关联度之间一共有4个参数,分别决定了筛选关键词、形成标签集与计算...
  • 计算机视觉--光流(optical flow)简介

    万次阅读 多人点赞 2018-09-09 22:38:10
    光流理论背景 1.什么是光流 光流(optical flow)是空间运动物体在观察成像平面上的像素运动的瞬时速度。 光流是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的...
  • 梯度下降Vs牛顿下降

    千次阅读 2018-03-09 19:40:23
    Author: Frank在机器学习领域中,梯度下降和牛顿下降是两个非常有分量的方法。两者在本质上都是为了寻找极值点的位置,但是牛顿下降的收敛速度更快。下面以单变量函数为例来进行基本的解释。牛顿下降的递推...
  • numpy导出csv取消科学计数

    千次阅读 2019-06-22 11:09:32
    取消程序内的科学计数 import numpy as np np.set_printoptions(suppress=True) 取消导出csv的科学计数 在数字数据后加入看不见的字符,numpy就不会把它识别程数字,也就不会用科学计数去展示了。 但是呢,我...
  • OpenGL核心技术之延迟着色

    千次阅读 2017-03-08 21:30:27
    此之外,延迟渲染还允许我们做更多的优化,从而渲染更多的光源。 在几何处理阶段中填充G缓冲非常高效,因为我们直接储存像是位置,颜色或者是法线等对象信息到帧缓冲中,而这几乎不会消耗处理时间。在此基础上使用...
  • 光流运动目标检测

    万次阅读 2019-05-21 10:07:11
    接上篇,OpenCV视频目标跟踪及背景分割器,本篇介绍OpenCV—python目标跟踪==》光流 回顾: 目标跟踪是对摄像头视频中的移动目标进行定位的过程。实时目标跟踪是许多计算机视觉应用的重要任务,如监控、基于感知...
  • 在Python中,整数的除法和浮点数的除法运算机制不同,我们必须使用浮点数才能得到正确的结果。与计算年波动率的方法类似,计算月波动率如下: print("Monthly volatility", annual_volatility * np.sqrt(1./12.)) 月...
  • python整数除法产生小数部分不显示小数 print(2/3) 0 解决方法 print(float(2) / float(3)) 0.666666666667 四舍五入法保留2位小数 print("%.2f" % (float(2) / float(3))) 0.67 或者 print(round(float(2) / float...
  • Sprint回顾会议的一种简单玩

    千次阅读 2016-02-28 16:43:25
    我会让所有团队成员直接说出他们想要停止做的事情,此之外什么也别说。我可能会混用两种方法。我会走到每个人的身边,挨个儿让他们指出在当前流程里他们想要停止做的一件事。 在“开始/停止/继续”回顾会议上,...
  • mysql不显示科学计数

    万次阅读 2017-09-15 14:24:02
    数据库中查询显示如下: DEBUG结果如图所示: 可以看出使用CONVERT(列名,DECIMAL(10,4)) 函数计算commAmount的值后会显示出全部数据,而正常查询的则用科学计数显示出来
  • 下采样后的点云向量估计: 平面提取后效果图(红色为地面点云) 地面提取效果同时展示向量的: 从下图可看出:原点云24万点,下采样后12万点,移除离群点后11万点,地面点近10万点; import open3d as o3d def ...
  • 拟牛顿及其相关解法

    千次阅读 2016-04-09 21:22:24
    使用导数的最优化算法中,拟牛顿是目前为止最为行之有效的一种算法,具有收敛速度快、算法稳定性强、编写程序容易等优点。在现今的大型计算程序中有着广泛的应用。本文试图介绍拟牛顿的基础理论和若干进展。 ...
  • 上文链接:蓝桥杯之合根植物-并查集及父子节点规律求解简化(c++实现) 资源限制 时间限制:1.0s 内存限制:256.0MB ... 运算指令:‘ADD’,‘SUB’,‘MUL’,‘DIV’,‘MOD’,分别表示加减乘,除法取商,除法...
  • 可以考虑用【cast(列名 as bigint/decimal(m,n))】的方式避免科学计数结果的出现。1、浮点数非科学计数展示hive&gt; select pay_uid_rate_90,cast(pay_uid_rate_90 as decimal(32,30)),pay_amount_per...
  • 原文:Documenting Your Swift Code in Xcode Using Markdown 作者:GABRIEL THEODOROPOULOS ...從 Xcode 7 開始,開發者終於可以在他們的文檔中使用强大 Markdown 語來進行富文本编辑了,Mar
  • 利用Pandas来清除重复数据

    千次阅读 多人点赞 2020-02-09 18:21:49
    一.前言 最近刚好在练手一个数据挖掘的项目,众所周知,数据...利用Pandas中的这两个函数你可以清除数据中的重复行,或者加以指定参数你也可以指定删除数据中某项/某几项中重复的数据,总而言之,Pandas大好!
  • 在开发过程中,经常会遇到过大或过小的数值,该数值会转变为科学计数的形式,例:3141592600会转成3.1415926E9,0.00000031415926会转成3.1415926E-7。无论是在页面上展示,还是下载,还是再次计算都不会达到我们...
  • 目标跟踪之Lukas-Kanade光流

    万次阅读 多人点赞 2015-06-25 16:58:29
    光流计算最初是由Horn和Schunck于1981年提出的,创造性地将二维速度场与灰度相联系,引入光流约束方程,得到光流计算的基本算法.光流计算基于物体移动的光学特性提出了2个假设: ①运动物体的灰度在很短的间隔...
  • CRC查找表推导及代码实现比较

    万次阅读 多人点赞 2016-03-13 23:36:43
     定义g(x) 与 h(x)的运算是m 次循环移位异或运算,如上例g(x) 与 h(x)的运算如下      经过迭代运算后,最终得到的r 是10001100,这就是CRC效验码。 CRC直接移位算法:  通过示例,可以...
  • 1. 引用计数(Java没有采用) 2. 标记-清除 (jvm老年代回收) 3. 标记-压缩 (jvm老年代回收) 4. 复制算法 (jvm新生代回收) 5. 几种算法对比 至于新生代和老年代的说法会在本文第4-5点简要介绍 1. ....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 55,250
精华内容 22,100
关键字:

展除法