정수부의 자리수가 조금 큰 부동소수점수(64비트 double 포맷의 수)를 십진수 표현으로 출력해 보았습니다.
십진수로 표현하면 유효자리수 개수가 약 14~15개 정도인데,
Java 언어로는 유효수자 개수를 17개로 자르고 그 뒤를 모두 0으로 출력하였지만,
C# 언어로는 유효수자 아래 부분을 15개로 자르고 그 뒤를 모두 0으로 출력합니다.
Pyhon 은 C/C++ 의 경우 처럼 유효수자 아래 부분을 0으로 채우지 않습니다.
물론 Java, C#, Python, C, C++ 어느 프로그램 언어든
십진수로 표현할 때 자르는 방법이나 유효수자 아래 부분을 채우는 방법은 다르지만,
덧셈, 뺄셈, 곱셈, 나누셈, 기타 등등에서 유효수자 아래부분의 처리 결과는 대동소이합니다.
// Filename: Test_Of_Native_Double_Precison_01.cs
//
//
// Compile: csc Test_Of_Native_Double_Precison_01.cs /r:System.Numerics.dll
// Execute: Test_Of_Native_Double_Precison_01
// Output:
// Math.Pow(2, 128) = 340282366920938000000000000000000000000.00
// Math.Pow(2, 128) = 340282366920938000000000000000000000000
// BigInteger.Pow(new BigInteger(2).128) = 340282366920938463463374607431768211456
//
//
// ------------------------------------------------------
// 출처: https://scripting.tistory.com/
// ------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
using System.Numerics;
public class Test_Program_Of_Native_Double
{
public static void Test_01()
{
double y = Math.Pow(2, 128);
Console.WriteLine(" Math.Pow(2, 128) = {0:F}", y);
Console.WriteLine(" Math.Pow(2, 128) = {0:F0}", y);
BigInteger z = BigInteger.Pow(new BigInteger(2), 128);
Console.WriteLine("BigInteger.Pow(new BigInteger(2).128) = {0}", z);
}
public static void Main(string[] args)
{
Test_01();
Console.WriteLine();
}
}
'프로그래밍 > C#' 카테고리의 다른 글
분수 계산 라이브러리 FractionLib 를 소개합니다. (0) | 2022.07.25 |
---|---|
0.3 - 0.1 == 0.2 ? (0) | 2020.12.14 |
Visual Studio 2019 에서 유닛 테스트 작성하는 예 (0) | 2020.04.21 |
C# 의 세제곱근 구하는 함수 Cbrt() (0) | 2020.03.25 |
원시 피타고라스 삼조를 생성하는 C# 소스 (0) | 2020.03.01 |