.Net에서 과학 계산에 사용할 가장 권장되는 데이터 유형은 무엇입니까? 플로트, 더블 또는 다른 것입니까?.Net의 과학 계산에 권장되는 데이터 유형은 무엇입니까?
답변
과학적 가치는 자연적으로 부정확 한 정도가있는 "자연적"값 (길이, 질량, 시간 등)이되는 경향이 있습니다. 그러나 매우 크거나 매우 큰 또는 아주 작은 숫자를 원할 수도 있습니다. 이 값들에 대해서는 일반적으로 double
이 좋습니다. (하드웨어 지원이 거의 모든 곳에서) 빠르며 크고 작은 값으로 위아래로 크기가 조정되며 정확히 decimal
값과 관련이없는 경우 일반적으로 잘 작동합니다.
decimal
은 정확한 값이있는 "인공적"숫자에 적합한 유형이며, 거의 항상 소수로 자연스럽게 표시됩니다.이 표준적인 예는 통화입니다. 그러나 저장 공간 (4 대신 값 당 8 바이트)에서 double
의 두 배나 비싸고 지수 범위가 더 좁기 때문에 범위가 작으며 하드웨어 지원 부족으로 인해 속도가 훨씬 느립니다.
저장 용량 문제가있는 경우에만 개인적으로 float
을 사용합니다. 소수점 이하 7 자리 만 있으면 얼마나 빨리 부정확도가 올라갈 수 있는지 놀랍습니다.
궁극적으로 "곰들이 당신을 먹을 것"이라는 의견이 제시하는 바와 같이, 그것은 당신이 이야기하고있는 가치에 달려 있습니다. 물론 당신이 그걸로 무엇을 할 계획입니까? 더 이상의 정보가 없으면 나는 double
이 좋은 출발점이라고 생각합니다. 그러나 당신은 정말로 개인적인 상황에 따라 결정해야합니다.
"자연"대 "인공"구별을 좋아합니다. –
Double
은 이러한 작업에 가장 신뢰할 수있는 데이터 형식 인 것처럼 보입니다. WPF에서도 광범위하게 사용합니다.
물론 "과학 계산"이라는 용어는 다소 모호하지만 일반적으로 double
입니다.
float
은 주로 32 비트 부동 소수점 숫자가 필요한 라이브러리와의 호환성을위한 것입니다. float
과 double
연산 (더하기와 같음)의 성능은 완전히 동일하므로 새 코드는 더 높은 정밀도를 가지기 때문에 항상 double
을 사용해야합니다.
그러나 x86 JITter는 float
을 사용하거나 반환하는 함수를 인라인하지 않으므로 float
메서드를 사용하면 실제로 속도가 느려질 수 있습니다. 다시 말하지만 호환성을위한 것입니다. 인라인 된 경우 실행 엔진은 정밀도를 낮추는 변환 단계를 건너 뜁니다. 따라서 JITter는 이러한 함수를 인라인하는 경우 의도하지 않게 일부 계산 결과를 변경할 수 있습니다.
마지막으로 decimal
도 있습니다. 특정 소수 자릿수를 갖는 것이 중요 할 때마다이 값을 사용하십시오. 고정 관념의 유스 케이스는 통화 조작이지만, 물론 소수점 이하 2 자리를 지원합니다. 실제로는 80 비트 데이터입니다.
정확도가 64 비트 double
이면 충분하지 않은 경우에는 임의 정밀도 숫자에 외부 라이브러리를 사용하는 것이 좋습니다. 물론 특정 과학적 유스 케이스에서 특별히 호출해야하는 경우에만 필요합니다.
성능에 좋은 점. –
인라인 주장에 대한 출처는 무엇입니까? 3.5 SP1에서 JIT가 값 유형 매개 변수를 사용하는 함수를 인라인 할 수 없도록 수정 된 버그가 있었지만 다른 문제는 생각할 수 없습니다. – JulianR
소스를 더 이상 찾을 수 없지만 문제를 언급했습니다. CLR 평가 스택은 부동 소수점 숫자에 대해서만 64 비트 값을 사용합니다. 32 비트 부동 소수점이 메서드에 전달되거나 메서드가 32 비트 부동 소수점을 반환 할 때마다 평가 스택의 값은 정밀도 부족을 유지하기 위해 32 비트 부동 소수점으로 변환됩니다. – Timwi
십진수는 float/double보다 많이 사용된다는 점에 유의하십시오 (Jon Skeet과 Timwi가 쓴 것 이외에).
정확한 값이 필요한 경우가 아니면 두 번 권하고 싶습니다. 10 진수는이 정확성이 필요한 재무 계산 용입니다.과학적 계산은 어쨌든 정확하게 1 미터를 측정 할 수 없기 때문에 작은 오차를 허용합니다. 플로트는 스토리지가 문제가되는 경우에만 도움이됩니다 (예 : 거대한 행렬).
- 1. .net의 과학 데이터 플로팅
- 2. 통화 계산에 더 적합한 C#의 데이터 유형은 무엇입니까?
- 3. .Net의 웹 서비스에 적합한 컬렉션 유형은 무엇입니까?
- 4. 이러한 데이터 유형은 무엇입니까?
- 5. PostgreSQL에서 암호의 데이터 유형은 무엇입니까?
- 6. 서수에 사용할 데이터 유형은 무엇입니까?
- 7. MLSLABEL Oracle 데이터 유형은 무엇입니까?
- 8. Mathematica의 구조체 데이터 유형은 무엇입니까?
- 9. 데이터 이전 계산에 대한 도움말
- 10. 관계형 데이터베이스에 과학 데이터 저장
- 11. 적절한 Oracle 데이터 유형은
- 12. 수익 데이터 유형은 mysql입니까?
- 13. SQL - 백분율을 나타내는 데이터 유형은 무엇입니까?
- 14. Android에서 사용해야하는 데이터 저장소 유형은 무엇입니까?
- 15. 특징 구조 구현 : 사용할 데이터 유형은 무엇입니까?
- 16. iPhone에서 가져올 수있는 데이터 유형은 무엇입니까?
- 17. gorm에서 시간을 사용하기위한 데이터 유형은 무엇입니까?
- 18. MySQL의 통화에 가장 적합한 데이터 유형은 무엇입니까?
- 19. MySQL에 부울 값을 저장할 데이터 유형은 무엇입니까?
- 20. ID를 저장하는 데 사용하는 데이터 유형은 무엇입니까?
- 21. RDBM에 멀티미디어를 저장하기위한 데이터 유형은 무엇입니까?
- 22. Clang 컴파일러의 C enum의 데이터 유형은 무엇입니까?
- 23. base64로 인코딩 된 이미지의 데이터 유형은 무엇입니까?
- 24. LINQ : 결과의 유형은 무엇입니까?
- 25. 프로그레시브 세금 계산에 적합한 데이터 구조
- 26. Oracle 데이터 유형 NUMERIC에 해당하는 Java 데이터 유형은 무엇입니까?
- 27. .net의 데이터 액세스 레이어
- 28. 패스 동적 데이터 유형은 작동하려면
- 29. 돈과 함께 사용해야하는 데이터 유형은
- 30. .NET의 속성 및 데이터 바인딩
무엇을 계산하고 있습니까? 나는 당신이 작업하고있는 데이터, 당신이하고있는 일, 요구가 무엇인지에 전적으로 달려 있다고 말할 수 있습니다. –