숫자 유형의 부동 소수점 숫자 유형:
우리 일상 생활에는 정수뿐만 아니라 소수도 있습니다. C#에는 소수에 대한 두 가지 데이터 유형이 있습니다: (단정밀도) float, ( 배정밀도) ) 배정밀도.
차이는 값 범위와 정밀도에 있습니다. 부동 소수점 숫자의 계산 속도는 정수의 계산 속도보다 훨씬 낮고, double 유형의 계산 속도는 부동 소수점의 계산 속도보다 느립니다. 프로그램에서 배정밀도 부동 소수점 숫자를 광범위하게 사용하면 더 많은 메모리 단위를 차지하고 컴퓨터의 처리 작업이 더 힘들어집니다. 그러나 double 유형을 사용하는 결과는 부동 소수점보다 더 정확하므로 정밀도 요구 사항은 그리 높지 않습니다. . 이 경우 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}\ndouble f={1}",c,f); //输出 "\n" 表示换行 } } }결과 비교: 실제적으로 float 결과를 세어보니 8자리이고 그중 7자리는 숫자입니다. 결과는 16자리인데 그 중 15번째 자리는 숫자 3입니다. 성찰적으로 float와 double의 속성을 반성해보면 플러스와 마이너스 사이의 범위는 1.5*10이 아닐까요? ^-45에서 3.4*10^38? 최소한 38자리, 즉 7자리만 표현할 수 있습니다. Double은 최소한 300자리 이상, 즉 16자리만 나타낼 수 있습니다. 결과는 38개, 즉 300개 이상이 되어야 합니다. . 좋아요. ? ? ? 왜? ? ? 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}\ndouble f={1}",a,d); //输出 "\n" 表示换行 } } }결과는 다음과 같습니다. 물론입니다. float의 8번째 비트는 4이고 0으로 반올림되었습니다. double의 16번째 비트는 원래 4입니다. 17번째 비트는 5이므로 1이 추가되고, 다음의 0은 생략됩니다. . 위 내용은 C# 학습일지 06---데이터형 - 부동소수점수형 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!