浮点数

decimal,float和double的区别

独自空忆成欢 提交于 2019-12-05 06:56:00
一直很奇怪C#的预定义数据类型中为什么加了一个decimal,有float和double不就够了吗?今天来挖一挖。 浮点型 Name CTS Type De script ion Significant Figures Range (approximate) float System.Single 32-bit single-precision floating point 7 ±1.5 × 10?45 to ±3.4 × 1038 double System.Double 64-bit double-precision floating point 15/16 ±5.0 × 10 ?324 to ±1.7 × 10308 如果我们在代码中写一个12.3,编译器会自动认为这个数是个double型。所以如果我们想指定12.3为float类型,那么你必须在数字后面加上F/f: float f = 12.3F; decimal类型 作为补充,decimal类型用来表示高精度的浮点数 Name CTS Type De script ion Significant Figures Range (approximate) decimal System.Decimal 128-bit high precision decimal notation 28 ±1.0 × 10?28 to ±7.9

float和double的主要区别?

僤鯓⒐⒋嵵緔 提交于 2019-12-05 06:55:15
float : 单精度浮点数 double : 双精度浮点数 两者的主要区别如下: 01.在内存中占有的字节数不同 单精度浮点数在机内存占4个字节 双精度浮点数在机内存占8个字节 02.有效数字位数不同 单精度浮点数有效数字8位 双精度浮点数有效数字16位 03.数值取值范围 单精度浮点数的表示范围:-3.40E+38~3.40E+38 双精度浮点数的表示范围:-1.79E+308~-1.79E+308 04.在程序中处理速度不同 一般来说,CPU处理单精度浮点数的速度比处理双精度浮点数快 如果不声明,默认小数为double类型,所以如果要用float的话,必须进行强转 例如:float a=1.3; 会编译报错,正确的写法 float a = (float)1.3;或者float a = 1.3f;(f或F都可以不区分大小写) 注意:float是8位有效数字,第7位数字将会四舍五入 面试题: 1.java中3*0.1==0.3将会返回什么?true还是false? fale,因为浮点数不能完全精确的表示出来,一般会损失精度。 2.java中float f = 3.4;是否正确? 不正确,3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于向下转型会造  成精度损失,因此需要强制类型转换float f = (float)3.4;或者写成 float f = 3

JAVA中的float和double的区别

时光怂恿深爱的人放手 提交于 2019-12-05 06:55:02
1.两个在定义时的区别 1)float型 内存分配 4个字节,占32位,范围从10^-38到10^38 和 -10^38到-10^-38 例float x=123.456f,y=2e20f; 注意float型定义的数据末尾必须有"f"或"F",为了和double区别 (2)double型 内存分配 8个字节,范围从10^-308到10^308 和 -10^-308到-10^-308 例double x=1234567.98,y=8980.09d; 末尾可以有"d"也可以不写 2. 特别需要注意的是两个浮点数的算术运算 直接使用 +,-,*,%运算符的问题 public class Test{ public static void main(String args[]){ System.out.println(0.05+0.01); System.out.println(1.0-0.42); System.out.println(4.015*100); System.out.println(123.3/100); } } 结果: 0.060000000000000005 0.5800000000000001 401.49999999999994 1.2329999999999999 原因: 首先得从计算机本身去讨论这个问题。我们知道,计算机并不能识别除了二进制数据以外的任何数据

php中float和double的区别?

a 夏天 提交于 2019-12-05 06:54:14
为了区分 php中float和double的区别,我采用以下代码分别输出。 $vad = 1.1; print gettype($vad); var_dump($vad); 这将输出: double float(1.1) 看着其实不同,实际上在php中,没有区别。 float,double或real是相同的数据类型。浮点型(也叫浮点数 float,双精度数 double 或实数 real. 在C级,一切都存储为双。 实际大小仍然是平台相关的。有关详细信息,请参阅手册: http://www.php.net/manual/en/language.types.float.php Warning 浮点数的精度 浮点数的精度有限。尽管取决于系统,PHP 通常使用 IEEE 754 双精度格式,则由于取整而导致的最大相对误差为 1.11e-16。非基本数学运算可能会给出更大误差,并且要考虑到进行复合运算时的误差传递。 此外,以十进制能够精确表示的有理数如 0.1 或 0.7,无论有多少尾数都不能被内部所使用的二进制精确表示,因此不能在不丢失一点点精度的情况下转换为二进制的格式。这就会造成混乱的结果:例如,floor((0.1+0.7)*10) 通常会返回 7 而不是预期中的 8,因为该结果内部的表示其实是类似 7.9999999999999991118…。

数据的表示与运算-浮点数

醉酒当歌 提交于 2019-12-05 05:29:05
数据的表示与运算-浮点数 前言: 计算机中,数字分为定点数和浮点数。相对于浮点数,定点数比较好理解,原码补码反码移码。而浮点数十分繁杂。 关于浮点数的繁杂,我觉得最好的解释就是, \(William\ M. Kahan\) 因其在浮点数运算标准的制定上的突出贡献而获得图灵奖。 \(Kahan\) 也是浮点数 \(IEEE754\) 标准的主要设计师。 初识浮点数: 假如说我们现在想要表示光速这样一个数值,我们可以怎么做? \(1:\) 采用整数方式把他写出来,那么就是 \(300...00m/s\) 。这样数字十分的长,与计算机不好保存。 \(2:\) 采用科学计数法,那么就是 \(3*10^{8}m/s\) ,那么如果我现在想保存这个数字,那么我只需要记录三个信息,第一个是 \(3\) ,第二个是 \(10\) ,第三个是 \(8\) 。 两种方法比较: 很明显第一种方法需要我们用更多的存储空间来保存它,而对于科学计数法,我们并不需要记录那么多的数却能表示同样的数值。 对于计算机而言,只能认识 \(0/1\) 符号,这在硬件实现上更为方便简单。所以我们这时候可以把 \(10\) 这个底数给取消掉,计算机默认他是 \(2\) ,这样我们就可以只用保存两个数字,来表示这样一个大的数字。 对于表示电子的质量,太阳系的直径,这样非常极端的数字时,科学计数法的优势显得更为明显。它更方便。

《深入理解计算机系统(第三版)》第二章学习总结

六月ゝ 毕业季﹏ 提交于 2019-12-05 05:18:01
第二章 信息的表示和处理 2.1 信息存储 字节(byte):8位的块,作为最小的可寻址的存储器单位,不是访问存储器中单独的位。 计算机字长:指明指针数据的标称大小。32位机器虚拟地址空间为4GB。64位为16EB。64位机器可以运行32位机器编译的程序,反过来不行。 字节顺序 小端法:最低有效字节在最前面; 大端法:最高有效字节在最前面; 大小端引起的字节顺序问题: 在不同类型的机器之间通过网络传输二进制数据(用协议解决)。 在阅读表示整数数据的字节序列时。 编写规避正常的类型系统的程序时。 字符串表示:字符串被编码为一个以null(‘\0’)字符结尾的字符数组。每个字符用某个标准编码来表示,常见的为ASCII字符码。代码表示:不同机器的指令编码是不同的,一般二进制代码是不兼容的。 布尔运算:~非,&与,|或,^异或,位运算。 逻辑运算:逻辑运算认为所有非0参数表示TRUE,0表示FALSE。对应OR(||)、AND(&&)和NOT(!)。 移位运算:左移,x<<k,丢弃最高的k位,右端补k个零。右移分为逻辑右移和算术右移。逻辑右移在左端补0,算术右移在左端补最高位。 2.2 整数表示 无符号整数直接用其二进制数值表示。 有符号整数用二进制补码表示,最高位为符号位,1表示负数,0为非负。补码的范围是不对称的,|Tmin|=|Tmax|+1,C语言中文件<limits.h

学习《深入理解计算机系统(第三版)》第二章总结

放肆的年华 提交于 2019-12-05 02:03:31
学习《深入理解计算机系统(第三版)》第二章总结 三种重要的数字表示 无符号编码:基于传统的二进制表示法,表示大于或等于0的数字。 浮点数编码:表示有符号整数的最常见的方式,可为正或负 浮点数编码:表示实数的科学记数法的以2为基数的版本 排列表示一个对象的字节的规则 小端法(little endian):某些机器选择在内存中按照从最低有效字节到最高有效字节的顺序存储对象,最低有效字节在最前面的方式成为小端法。 大端法big endian):一些机器则按照从最高有效字节到最低有效 字节的顺序存储,最高有效字节在最前面的方式成为大端法。 双端法(bi-endian):可以把它们配置成作为大端或者小端的机器运行。然而,实际情况是:一旦选择了特定操作系统,那么字节顺序也就固定下来。 有符号数和无符号数之间的转换 C语言允许在各种不同的数字数据类型之间做强制转换。 强制类型转换的结果保持位值不变,只是改变了解释这些位的方式。 执行一个运算的时候,如果它的一个运算数是有符号的而另一个是无符号的,那么C语言会隐式的将有符号数强制类型转换为无符号数,并假设两个数都是非负的,来执行运算。 整数运算: ①无符号数的加法: 重要结论:模数加法形成了阿贝尔群,可交换结合,每个元素都有一个加法逆元。 ②补码加法; ③补码的非; ④无符号乘法; ⑤补码乘法: 重要结论:设为二进制表示的无符号整数,对于任意k0

SQL数据类型详解

对着背影说爱祢 提交于 2019-12-05 00:02:40
一、数据类型简介 数据表由多列字段构成,每一个字段指定了不同的数据类型,指定了数据类型之后,也就决定了向字段插入的数据内容; 不同的数据类型也决定了 MySQL 在存储它们的时候使用的方式,以及在使用它们的时候选择什么运算符号进行运算; 数值数据类型:TINYINT 、SMALINT 、MEDIUMINT 、INT 、BIGINT 、FLOAT 、DOUBLE 、DECIMAL; 日期/时间类型:YEAR 、TIME 、DATE 、DATETIME 、TIMESTAMP; 字符串类型:CHAR 、VARCHAR 、BINARY 、VARBINARY 、BLOB 、TEXT 、ENUM 、SET。 二、数值类型简介 数值类型主要用来存储数字,不同的数值类型提供不同的取值范围,可以存储的值范围越大,所需要的存储空间也越大; 数值类型分为:①整数类型 ②浮点数类型 ③定点数类型。 1、整数类型如下: 2、浮点数类型和定点数类型 MySQL 中使用浮点数和定点数来表示小数,浮点数有两种类型:单精度浮点数(FLOAT)和双精度浮点数(DOUBLE),定点数只有 DECIMAL; 浮点数和定点数都可以用 (M,N) 来表示,其中 M 是精度,表示总共的位数,N 是标度,表示小数的位数,如:3.145,用M/N来表示就是4,3; DECIMAL 实际是以字符串形式存放的,在对精度要求比较高的时候

python9课——3

萝らか妹 提交于 2019-12-04 16:30:45
数据类型:整数、浮点数、复数、操作符、函数 整数: 十进制 二进制:0b/0B 八进制:0o/0O 十六进制:0x/0X 浮点数:(有长度限制) 浮点数运算存在不正确尾数(因为10进制化为二进制的时候就不是精确的了) 复数(python独有) z.real()实数部分 z.image()虚数部分 操作符: + - * /(出来的结果是浮点数) //(这才是整除) % **(幂运算) 数值运算函数: 1、abs(x) 求绝对值 2、divmod(x,y) (x//y,x%y) 3、pow(x,y[,z]) z是可以省略的 (x**y)%z 求幂函数的余数 4、round(x[,d]) round(-10.123,2)=10.12 5、min(x1,x2,x3,x4.....xn) 来源: https://www.cnblogs.com/linfeng-up/p/11874489.html

python // 与 / 的区别

╄→гoц情女王★ 提交于 2019-12-04 16:20:16
在python 3.0中, “/”代表浮点数除法,返回浮点数结果; “//”代表整数除法,返回结果是整数; a=20 b=4 c=a/b d=a//bprint("a/b=",c)print("a//b=",d) 来源: https://www.cnblogs.com/kuangzhenxia-416/p/11873444.html