C#에서 정확도가 높은 숫자를 갖는 좋은 방법을 제안하십시오.

StackOverflow https://stackoverflow.com/questions/1668870

  •  13-09-2019
  •  | 
  •  

문제

나는 사용자의 키를 기계의 초기 구성에 저장 해야하는 프로젝트를 프로그래밍하고 있습니다. c#에 쓰고 싶습니다.

두 개의 숫자 r 및 x0, r = 3.9988 및 x0 = 0.5로 구성된 초기 구성이 있습니다. 이 숫자에 사용자 키를 추가하고 싶습니다. 예를 들어:

키 : HOS110 =>

  • r = 3.998810411111549049048
  • x0 = 0.5104111115049049048

1041111115049049048은 연결된 키의 ASCII 코드입니다.

이 숫자를 어떻게 저장할 수 있습니까?

이 작업을 수행하는 더 좋은 방법이 있습니까?

업데이트 : Matlab은 어떻습니까?

도움이 되었습니까?

해결책

무한한 정밀도가 필요하다면 BigInteger라고 불리는 것이 필요합니다. 그러나 이러한 클래스는 일반적으로 코드 샘플과 일치하지 않는 것처럼 보이는 과학적 계산 (일반적으로 데이터를 강화하는 데 적합하지 않음)에만 사용됩니다. 일반 계산 만 수행 해야하는 경우 문자열을 사용한 다음 계산을 위해 소수점으로 변환하십시오.

그러나 당신이 그런 큰 interger 클래스를 찾고 있다면 당신은 하나를 찾을 수 있습니다 여기.

.NET 4.0은 이름이 지정된 클래스 라이브러리에 BigInteger 내장 클래스가 있습니다. System.Numerics.BigInteger.

다른 팁

당신은 실제로 "추가"숫자가 아닙니다. 당신은 현악기를 연결하고 있습니다.

그것들을 현으로 보관하십시오. 당신은 그것보다 훨씬 더 정확하게 얻을 수 없습니다.

산술 작업을 수행 해야하는 경우 즉시 소수점으로 변환하는 것이 쉽습니다.

나는 당신이 왜 당신이 숫자의 일부로 열쇠를 사용하는지 실제로 따르지 않지만 그것을 따로두고 있습니다 ... System.Decimal (일명 decimal)는 여기서 작업에 적합한 도구처럼 보입니다.

글쎄, 당신이 달성하려는 정밀도에 따라, 아마도 이것들을 한 쌍으로 저장할 수 있습니다. 소수 가치.

그러나 이것이 ASCII 코드 인 경우 이것을 문자열로 직접 저장할 수 있습니다. 이 정보를 사용하기 전에 특히 104111을 꺼내려고하는 경우 수치 정밀 문제를 피할 수 있습니다.

"키"를 저장하고있는 것 같습니다. 그렇다면 문자열을 사용하지 않겠습니까?

부동 소수점 번호는 본질적으로 부정확합니다. 이 '초기 구성'이 무엇인지 또는 왜 플로트인지 잘 모르겠지만 '사용자 키'(무엇이든)를 다루고 나중에 복구 할 수는 없습니다. 사용자 키를 문자열이나 무언가로 별도로 저장하십시오.

이 '숫자'에 숫자 값이 없다면, 즉 수학 계산에 사용하지 않을 것이라면 숫자 데이터 유형에 저장할 필요가 없습니다. 당신은 그것들을 현으로 보관할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top