程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#學習日記06---數據類型 之 浮點數類型

C#學習日記06---數據類型 之 浮點數類型

編輯:C#入門知識

C#學習日記06---數據類型 之 浮點數類型


數值類型之浮點數類型:

在我們的日常生活中不僅有整數 ,還存在小數,在C#中小數有2種數據類型來表示 (單精度)float 、(雙精度)double。

他們的差別在於取值范圍與精度不同,計算機對浮點數的運算速度大大低於對整數的運算速度,對double型的運算速度低於對float的運算速度,如果在程序中大量的使用雙精度類浮點數,將會占用更多的內存單元,而計算機的處理任務也會更加繁重,但是用double類型的結果相對於float會更加精確,因此在對精度 要求不是很高的情況下我們可以采用float 類型。

單精度(float)類型: 取值范圍在正負 1.5*10^-45 到 3.4*10^38 之間,精度為7到8位數字;

雙精度(double)類型: 取值范圍在正負 5.0*10^-324 到 1.7*10^308 之間 精度為15到16位數字;

我寫個程序來區分下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Example
{
    class Program
    {
        static void Main(string[] args)
        {//同一類型在同一行定義時 用 , 分開

            float a = 3.0f,b = 10.0f;  //這裡注意定義float時 加上f/F  應為默認小數是double類型
            float c = b / a;        //相除 
            double d = 3.0, e = 10.0;
            double f = e/d;
            Console.WriteLine(float c={0}
double f={1},c,f);  //輸出  
  表示換行


        }
    }
}

結果對比:

\

本著求實精神我認真數了一下 float 的結果有8位其中7位是數字;double 的結果有16位其中15位是數字3;

本著反思的態度我又反思到了float 與double 的屬性,float 的范圍不是在 正負 1.5*10^-45 到 3.4*10^38 之間 的嗎?至少可以表示38位數字啊,這才7位, double 至少可以表示300多位數字啊,這才16位,我寫的是 10/3 結果應該有38個3,或 300多個3 才對啊???為什麼???是不是 在第9位與 第 17位的時候四捨五入了? 我又 寫了如下代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Example
{
    class Program
    {
        static void Main(string[] args)
        {

            float a = 3.333334444333333f;  //第8位(小數點也算一位)開始是4,第9位是4
            
            double d = 3333333333333.3455555544;  //第16位是4,17位是5
            
            Console.WriteLine(float c={0}
double f={1},a,d);  //輸出  
  表示換行


        }
    }
}

結果是這樣:

\

果然在float 的第8位是4捨去變為了0省略掉,double 的第16位本來是4,由於17位是5所以加1,後面為0省略。。

 

 

 

 

 

 

 

 

 

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved