栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

C#基础②——数据类型(decimal和float、double的区别)

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C#基础②——数据类型(decimal和float、double的区别)

 

                       

 

一、实战演练:
int number1 = 12;                              //一个整数类型的变量并赋值
double number2 = 1.11111111111111111111;       //64位双精度浮点型数据(存小数时电脑默认)
float number3 = (float)1.11111111111111111111; //32位单精度浮点型数据(使用时需先进行转换:0.1f或(flost)0.1)
char number4 = 'a';                            //字符数据,‘a’
string number5 = "123";                        //字符串数据,“abc“

Console.WriteLine(number1);
Console.WriteLine(number2);
Console.WriteLine(number3);
Console.WriteLine(number4);
Console.WriteLine(number5);
Console.ReadKey(); 

输出结果:

           


 

二、那我来问大家一个问题

??double和float都是存小数的,为什么还要分两个,一个不就行了,那它们两个有哪些区别?

我们先来看个实例:

double number2 = 1.11111111111111111111;
float number3 = (float) 1.11111111111111111111;

Console.WriteLine(number2);
Console.WriteLine(number3);
Console.ReadKey(); 

输出结果:

            

 

根据double和float的取值范围:

double64 位双精度浮点型(+/-)5.0 x 10^-324 到 (+/-)1.7 x 10^308
float32 位单精度浮点型-3.4 x 10^38 到 + 3.4 x 10^38

 

它们用图表示就是这样的:

                    

double比float的表示范围更大


 

三、??提问

问题1:给两个变量赋值的时候不是明明有很长的一大串数字吗?为什么输出的结果却只有这几位呢?

问题2:声明的number3是单精度浮点型数据,为什么后面赋值的时候还要写(float)呢?它的作用是什么?不要不行吗?


四、解决

问题1:

通过声明时的代码和输出的结果我们可以发现:

给声明的double类型的number2变量赋值时,小数点后有20位数,输出的结果却只有16位数

给声明的float类型的number3变量赋值时,小数点后有20位数,输出的结果却只有7位数

实际上,在C#中,

  • double为双精度,在计算机内是占8个字节的,有效位数为16位
  • folat为单精度,在计算机内是占4个字节,有效位数是7位
  • decimal为高精度,有效位数是28位

 

问题2:

我们来看一下在VS2019中,代码是什么样的

系统会报一个红色的错误提示:“无法将Double类型隐式转换为“float”类型;请使用“F”后缀创建此类型。

说的是什么意思呢?

在C#中,

当声明精度型的变量时,系统会自动默认这个小数为double类型的数值,所以在上图中我们声明的这个number3变量现在看着是float数据类型的数值,但实际上它是一个double类型的数值,要想将这个double类型转换为float类型,就需要在这个float数值的后面加上“F”或在小数前面加上(float)。如下图

float number3 = (float)1.11111111111111111111;

 

float number3 = 1.11111111111111111111F;

 

总结

在C#中,double比float的表示范围更大;

decimal的有效位数比double、float类型的都大,但表示范围却比它们两个都小;

decimal适用于银行这种更精确的货币,可以精确分数;

当声明小数的精度类型数值时,系统会自动默认为double类型;

声明float类型数值时,需要在小数前面加(float)或在小数后面加F

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/955120.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号