float和double数据类型的声明,转换和计算

声明时,只要有小数部分float必须加F/f,而double却不用

//float的声明只要有小数部分就要加F,不然会报不能隐私的将double类型转换为float类型。
            float f1 = 1;//OK
            float f2 = 1.1F;//一定要F
            float f3 = 1.23F;
            //double声明不需要加D
            double d1 = 1;
            double d2 = 1.2;
            double d3 = 1.232434377777777;

  

//double的精度高于float,double转为float为显示转换,float转为double为隐式转换,而且float只能显示小数点后6为,其余的四舍五入
f1 =(float) d3;//1.232435

  

           Console.WriteLine(5 / 8);//0 int/int=int 小数部位被省略
            Console.WriteLine(5.0 / 8.0);//0.625 double/double=double
            Console.WriteLine(5.0 / 8);//0.625 double/int=double
            Console.WriteLine(5F / 8F);//0.625 float/float=float
            Console.WriteLine(5D / 8D);//0.625 double/double=double
            Console.WriteLine(1/3*3);//0
            Console.WriteLine(1*3/3);//1
            Console.WriteLine(1.0/3*3);//1

  

时间: 2024-08-29 03:38:45

float和double数据类型的声明,转换和计算的相关文章

Java语言中:float、double数据类型在内存中是如何存储的

引用参考 https://www.cnblogs.com/chenmingjun/p/8415464.html#4291528 https://blog.csdn.net/yansmile1/article/details/70145416 java语言中,float类型数字在计算机中用4个字节(32位)来存储.double类型占用8个字节(64位). 从存储结构和算法上来讲,double和float是一样的,不一样的地方仅仅是float是32位的,double是64位的,所以double能存储

C#中对于float,double,decimal的误解(转载)

浮点型 Name CTS Type Description 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 ×

Java浮点数float和double精确计算的精度误差问题总结

1.float整数计算误差 案例:会员积分字段采用float类型,导致计算会员积分时,7位整数的数据计算结果出现误差. 原因:超出float精度范围,无法精确计算. float和double的精度是由尾数的位数来决定的.浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响. float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字: double:2^5

【Java】基本数据类型以及其转换

整理了一下Java基本数据类型和面试可能涉及的知识.      字节数(byte)  位数(bit)  取值范围 整型  byte  1  8  -2^7 ~ 2^7 -1 short   2  16  -2^15 ~ 2^15-1 int*  4  32  -2^31 ~ 2^31-1  long   8  64  -2^63 ~ 2^63-1   浮点型   float   4  32   double*  8  64   字符型 char   2  16 0~2^16-1 布尔型 bool

Java中浮点型数据Float和Double进行精确计算的问题

一.浮点计算中发生精度丢失  大概很多有编程经验的朋友都对这个问题不陌生了:无论你使用的是什么编程语言,在使用浮点型数据进行精确计算时,你都有可能遇到计算结果出错的情况.来看下面的例子. // 这是一个利用浮点型数据进行精确计算时结果出错的例子,使用Java编写,有所省略. double a = (1.2 - 0.4) / 0.1;System.out.println(a); 如果你认为这个程序的输出结果是“8”的话,那你就错了.实际上,程序的输出结果是“7.999999999999999”.好

精确计算java中float和double的精度

[本文相关的代码放在github上,地址为:https://github.com/VigourJiang/StructuredFloat] Java中double类型的格式是遵循IEEE 754标准的.尽管数学意义上的小数是连续的,但double仅仅能表示其中的一些离散点,把这些离散点组成的集合记为S,S的大小还是有限的.如果要保存的小数P刚好在集合S内,那么double类型就能精确的表示P:否则double类型只能从集合S中找一个与P最近的离散点P'代替P. 以上表述对于float也成立.IE

c语言基本数据类型short、int、long、char、float、double

C 语言包含的数据类型如下图所示: 一.数据类型与“模子”short.int.long.char.float.double 这六个关键字代表C 语言里的六种基本数据类型. 怎么去理解它们呢? 举个例子:见过藕煤球的那个东西吧?(没见过?煤球总见过吧).那个东西叫藕煤器,拿着它在和好的煤堆里这么一咔,一个煤球出来了.半径12cm,12 个孔.不同型号的藕煤器咔出来的煤球大小不一样,孔数也不一样.这个藕煤器其实就是个模子. 现在我们联想一下,short.int.long.char.float.dou

函数printf和scanf与数据类型float、double和long double

代码: #include <stdio.h> #include <stdlib.h> int main(void) { float f; double d; long double ld; // %f.%F.%e.%E.%a.%A.%g.%G可用于float*类型 // %lf.%lF.%le.%lE.%la.%lA.%lg.%lG可用于double*类型 // %Lf.%LF.%Le.5LE.%La.%LA.%Lg.%LG用于long double*类型 scanf("

Java中float和double转换的问题

为什么double转float不会出现数据误差,而float转double却误差如此之大?   double d = 3.14; float f = (float)d; System.out.println(f); 输出结果是:3.14; float f = 127.1f; double d = f; System.out.println(d); 输出结果是:127.0999984741211 为什么结果会是这样呢? 如何避免这样的问题发生,让float转double能得到实际的数据? 解决办法