首页 > 其他分享 >decimal,float和double的区别是什么?

decimal,float和double的区别是什么?

时间:2024-09-26 13:44:59浏览次数:1  
标签:字节 double decimal float 内存 小数

原文链接:https://blog.csdn.net/hellojoy/article/details/118105569

 

表示小数的一共有三种类型:float是单精度,double是双精度,decimal是数字型,它们所占的内存空间不一样,表示的位数也不一样。

1、精度:

  • float单精度小数部分能精确到小数点后面6位,用 32 位二进制进行描述
  • double双精度小数部分能精确到小数点后的15位,,用64位二进制进行描述,比float型更精确

2、占内存及处理速度:

  • float单精度内存占4个字节
  • double双精度内存占8个字节,是float型的两倍,且运算速度也比float慢得多

结论:虽然double型比float型精度高,但由于占内存更大,运算速度慢,且即使是double依然会存在精度损失的问题,且不会报告任何的错误,也不会有任何的异常产生。所以如果涉及到小数计算的话,我们会用到下边的decimal型:

1、精度:

decimal用l128位高精度浮点数,常用于金融运算,不会出现浮点数计算的误差

2、占内存及处理速度:

decimal类型的数据存储形式是,将每9位十进制数存储为4个字节

 

举个例子:
1)字段decimal(5,2),5-2=3,其中小数部分为2,对应上表1个字节,整数部分为3,对应上表2个字节
2)字段decimal(20,6),20-6=14,其中小数部分为6,就对应上表中的3个字节,而整数部分为14,14-9=5,就是4个字节再加上表中的3个字节

结论:decimal型比浮点型计算精度要高,通常使用更少的空间。所以通常我们在设置小数的时候,都是用的decimal类型。

标签:字节,double,decimal,float,内存,小数
From: https://www.cnblogs.com/Dongmy/p/18433288

相关文章

  • Java BigDecimal 详解
     目录一、BigDecimal简介二、常用方法A、BigDecimal常用构造方法B、BigDecimal常用方法二、代码实现A、加减乘除1.创建两个BigDecimal对象2.BigDecimal相加3.BigDecimal相减4.BigDecimal相乘5.BigDecimal相除B、转换1.定义一个数值2.转换3.java.math.BigDeci......
  • 实型(浮点型):float、double
    实型(浮点型):float、double实型变量也可以称为浮点型,浮点型变量是用来存储小数数值的。在C语言中,浮点型分为两种:单精度浮点型(float)、双精度浮点型(double),但是double型变量所表示的浮点数比float型变量更精确。由于浮点型变量是由有限的存储单元组成,因......
  • FormatConvertedBitmap DestinationFormat Gray32Float BlackWhite
     <Windowx:Class="WpfApp410.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.micros......
  • 万象更新 Html5 - css: float 布局: 基础
    源码https://github.com/webabcd/Html5作者webabcd万象更新Html5-css:float布局:基础示例如下:css\src\layout\float\demo1.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>float......
  • 万象更新 Html5 - css: float 布局: 通过 float 布局实现 3 栏式布局
    源码https://github.com/webabcd/Html5作者webabcd万象更新Html5-css:float布局:通过float布局实现3栏式布局示例如下:css\src\layout\float\demo2.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8">&......
  • c# 笔记 winform添加右键菜单,获取文件大小 ,多条件排序OrderBy、ThenBy,list<double>截取
    Winform右键菜单‌要在C#Winform应用程序中添加右键菜单,‌你可以按照以下步骤操作:‌1.‌创建菜单项‌在Form的构造函数或加载事件中,‌创建ContextMenuStrip控件的实例,‌并为其添加菜单项。‌2.‌绑定到控件‌将ContextMenuStrip控件绑定到需要显示右键菜单的控件上,‌如Panel......
  • Double Write
    优质博文:IT-BLOG-CN一、存在的问题为什么需要DoubleWrite:InnoDB的PageSize是16kb,其数据校验也是针对这16KB来计算的,将数据写入磁盘是以Page为单位的进行操作的。而计算机硬件和操作系统,写文件是以4KB作为基本单位,那么将一个Page写到磁盘上,在OS级别需要4个块。当发生数据......
  • JAVA 多线程基础:JAVA中double 和 long非原子读写问题
    在解释这个问题之前,我们先来回顾下Java中基础数据类型所占的位数。类型长度(位)字节byte41boolean41int324short162long648char162float324double648可以看到对于double以及long两种基本数据类型,所占位数为64位。而JVM却有32bit与64bit两种,也就是说在32bitJVM中不能将doub......
  • java实际开发——涉及金额时使用的数据类型BigDecimal
    目录首先说结论,使用BigDecimal类。为什么不用其它的类型?(比如int、long、float、double)1、整型:2、浮点型:BigDecimal类基本数据类型与BigDecimal使用时的差别:1、创建2、+-*/3、比较标度(Scale)舍入模式首先说结论,使用BigDecimal类。为什么不用其它的类型?(比......
  • BigDecimal
    加减乘除计算首先对bigdecimal的初始化BigDecimalnum1=newBigDecimal(0.005);BigDecimalnum2=newBigDecimal(1000000);BigDecimalnum3=newBigDecimal(-1000000);//尽量用字符串的形式初始化BigDecimalnum12=newBi......