四舍五入

关于 float的四舍五入问题

与世无争的帅哥 提交于 2020-02-27 03:04:57
3.55 can't be represented exactly in floating point. The internal value is something like 3.54999999999 , which rounds to 3.5 首先要明白浮点数在计算机中都绝大多数是近似 值。其实C++对浮点数是自动四舍五入的,而且是非常严格地下一位为5则入,小于5则不入。这在double型时一般是没有问题的。在float型时,因精度低,内存中的近似值可能刚好使决定四舍五入的那一位的5不足额,造成不能四舍五入。例如float x=3.1415;,实际上内存中的二进制换算过来是3.14149999999999.. .;,这样取3位小数后就成了3.141而不是3.142了;如果换成double型,立马就变成3.142了。可以这样解决就保险了:float型的有效位是6位左右,给要输出的变量加一个1E-6 ,四舍五入的问题就解决了。 来源: https://www.cnblogs.com/hulian425/p/12370204.html

printf的%.xlf 四舍五入保留问题

纵然是瞬间 提交于 2020-02-24 20:20:13
c的printf中对于小数会进行四舍五入,但是 有问题 例如 printf("%.1lf,%.1lf",1.55,2.55); 结果为 1.6,2.5 所以 加上一个特别小的数就可以了 至于四舍五入有问题的原因想探究的可以参考这篇文章 这里 来源: CSDN 作者: --zjy 链接: https://blog.csdn.net/qq_41829380/article/details/104479563

C# 保留两位小数,不四舍五入

故事扮演 提交于 2020-02-21 04:18:35
今天客户反馈了个问题,说界面上数字显示有误。查看后发现,是四舍五入导致的。 例如,5999.9975,保留两位四舍五入之后就显示6000,而6000在本项目中属于非法数字。 需求就是保留两位小数,但不要四舍五入,也就是直接砍掉不需要的数字。 网上查到一个方法,可用: https://www.cnblogs.com/xhjd520/archive/2009/06/24/1509982.html //2.9987->299.87->299->2.99 ((int)(d * 100) / 100.0).ToString(); //注意,分母的100必须是带小数点的 来源: CSDN 作者: zhouyingge1104 链接: https://blog.csdn.net/zhouyingge1104/article/details/104416452

BigDecimal加减乘除运算

浪子不回头ぞ 提交于 2020-02-20 01:45:04
BigDecimal加减乘除运算 public static double add(double v1,double v2) public static double sub(double v1,double v2) public static double mul(double v1,double v2) public static double div(double v1,double v2) public static double div(double v1,double v2,int scale) public static double round(double v,int scale) import java.math.BigDecimal; /** * 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精 * 确的浮点数运算,包括加减乘除和四舍五入。 */ public class Arith{ //默认除法运算精度 private static final int DEF_DIV_SCALE = 10; //这个类不能实例化 private Arith(){ } /** * 提供精确的加法运算。 * @param v1 被加数 * @param v2 加数 * @return 两个参数的和 */ public static double add

BigDecimalUtils BigDecimal加减乘除

白昼怎懂夜的黑 提交于 2020-02-20 01:36:29
public class BigDecimalUtil { private static int DEF_DIV_SCALE = 10; // 默认精确的小数位 /** * 提供精确的加法运算。 * * @param v1 被加数 * @param v2 加数 * @return 两个参数的和 */ public static double add(double v1, double v2) { BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.add(b2).doubleValue(); } /** * 提供精确的减法运算。 * * @param v1 被减数 * @param v2 减数 * @return 两个参数的差 */ public static double sub(double v1, double v2) { BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.subtract(b2).doubleValue

python 存储引擎

99封情书 提交于 2020-02-12 14:46:46
# 存储引擎 -- 存储数据的方式# 一张表 # 数据 # 表的结构 # 索引(查询的时候使用的一个目录结构)# Innodb存储引擎 mysql5.6之后的默认的存储引擎# 数据和索引存储在一起 2个文件 # 数据索引\表结构# 数据持久化# 支持事务 : 为了保证数据的完整性,将多个操作变成原子性操作 : 保持数据安全# 支持行级锁 : 修改的行少的时候使用 : 修改数据频繁的操作# 支持表级锁 : 批量修改多行的时候使用 : 对于大量数据的同时修改# 支持外键 : 约束两张表中的关联字段不能随意的添加\删除 : 能够降低数据增删改的出错率# Myisam存储引擎 mysql5.5之前的默认的存储引擎# 数据和索引不存储在一起 3个文件 # 数据\索引\表结构# 数据持久化# 只支持表锁# Memory存储引擎# 数据存储在内存中, 1个文件 # 表结构# 数据断电消失# 面试题# 你了解mysql的存储引擎么?# 你的项目用了什么存储引擎,为什么? # innodb # 多个用户操作的过程中对同一张表的数据同时做修改 # innodb支持行级锁,所以我们使用了这个存储引擎 # 为了适应程序未来的扩展性,扩展新功能的时候可能会用到...,涉及到要维护数据的完整性 # 项目中有一两张xx xx表,之间的外键关系是什么,一张表的修改或者删除比较频繁,怕出错所以做了外键约束4

SQL中的real、float、decimal、numeric数据类型区别

不羁的心 提交于 2020-02-12 07:54:35
SQL中的real、float、decimal、numeric数据类型区别 https://www.cnblogs.com/Sungeek/p/12167796.html 概述: 浮点数据类型包括real型、float型、decimal型和numeric型。浮点数据类型用于存储十进制小数。 在SQL Server 中浮点数值的数据采用上舍入(Round up)的方式进行存储,所谓上舍入也就是,要舍入的小数部分不论其大小, 只要是一个非零的数,就要在该数字的最低有效位上加1,并进行必要的进位。 由于浮点数据为近似值,所以并非数据类型范围内的所有数据都能精确地表示。 1、区别说明 decimal(numeric):同义,用于精确存储数值 float 和 real:不能精确存储数值 2、real数据类型 real型数据的存储大小为4个字节,可精确到小数点后第7位数字。 这种数据类型的数据存储范围为从-3.40E+38~-1.18E-38,0和1.18E-38~3.40E+38。 在MSSQL中real的同义词是float,用法几乎一样。 3、float数据类型 float型的数据存储大小为8个字节,可精确到小数点后第15位数字。 这种数据类型的数据存储范围为从-1.79E+308~-2.23E-308,0和2.23E+308~1.79E+308。 FLOAT(size,d)

转:SQL四舍五入

和自甴很熟 提交于 2020-02-10 11:34:33
ROUND 用到四舍五入并且保留小数点时我们肯定会首选ROUND函数, 如果字段的数据类型是decimal(18,10)时,那么四舍五入后还会有很多0出现。 CAST和CONVERT 其实我使用强转时并没有打算四舍五入结果,只是单纯为了得到符合我要求的数据,今天才发现这两个强转也会四舍五入结果,也就是说下面三个语句将会返回相同的结果值 select ROUND(32.678,1) --32.700 select CAST (32.678 as DECIMAL (5,1)) --32.7 select convert ( NUMERIC (5,1),32.678) --32.7 转自: https://www.cnblogs.com/sword-successful/p/4929598.html 来源: https://www.cnblogs.com/24Key/p/12290131.html

c#中取整函数Math.Ceiling,Math.Round和Math.Floor的区别

无人久伴 提交于 2020-02-08 04:38:46
1. Math.Ceiling(),只要有小数就加1(小数部分不为0) 例如: Math.Ceiling(0.0) -> 0 Math.Ceiling(0.1) -> 1 Math.Ceiling(0.2) -> 1 Math.Ceiling(0.3) -> 1 Math.Ceiling(0.4) -> 1 Math.Ceiling(0.5) -> 1 Math.Ceiling(0.6) -> 1 Math.Ceiling(1.1) -> 2 2.Math.Round(),四舍五入取偶 四舍五入取偶意思的意思就是,针对于5到底入不入。如果把5入进去整数为偶数则入,若是奇数则不入。这样说如果不太理解,看下面的例子应该就会很容易理解了。 例如: Math.Round(0.4) -> 0 Math.Round(0.5) -> 0 Math.Round(0.6) -> 1 Math.Round(1.5) -> 2 Math.Round(2.5) -> 2 Math.Round(3.5) -> 4 3.Math.Floor(): 总是舍去小数 例如: Math.Floor(0.0) -> 0 Math.Floor(0.1) -> 0 Math.Floor(0.2) -> 0 Math.Floor(0.3) -> 0 Math.Floor(0.4) -> 0 Math.Floor(0.5) -