나는 바보 같은 질문이 없다는 말에 의존 할 것이지만, 나는 약간 멍청한 질문을한다.지수 표기법으로 숫자가 표시되지 않도록하는 더 쉬운 방법
편집 :
이 질문은 질문과 중복을 검색 할 때 내가 건너하지 않은 제목을 사용하지만, 이미 여기에 몇 번 답 것 같다. 여기에 몇 가지 관련 게시물은 다음과 같습니다
- Double to string conversion without scientific notation
- How to convert double to string without the power to 10 representation (E-05)
- 장소에 대한 답변 (존 소총)과 : http://www.yoda.arachsys.com/csharp/DoubleConverter.cs
원래 질문 : '
일부 앱에 시간에는 0.000023425
과 같이 약간 작은 숫자가 저장됩니다. 이 숫자는 사용자가 편집 할 수 있도록 TextBox
컨트롤에로드됩니다. 다음 인위적인 예는 내 문제를 보여줍니다 언급 한 바와 같이
Dim number As Double = 0.000023425
someTextBox.Text = number.ToString() ' Shows "2.3425E-05"
이 표시 텍스트가 2.3425E-05
이며, 사용자가 볼 수 있도록 정확하게 직관적이지 플러스, 나는 19 소수점 이하 자릿수를 (더 정확한 번호를). 출력을 고정 소수점으로하고 싶습니다. 물론 쉽고 깨끗하게 처리 할 수 있습니다.
number.ToString("F20") ' Shows "0.00002342500000000000"
하지만 그때 귀찮은 수의 0이 남아 있습니다. 그래서, 그 문제를 해결하기 위해 내가 할 수있는 :
number.ToString("#,##0.####################") ' Shows "0.000023425"
을 내가 원하는,하지만 거기 거대한 추한 형식 문자열을 가지고하는 것보다 그것을 할 수있는 더 좋은 방법이 무엇입니까? 그래, 그게 못생긴 것은 아니지만 확실히 다른 방법이있어, 그렇지? 내 목표는 DB에 친숙한 방식으로 저장되는 원시 값을 표시하는 것이며, 숫자에 형식을 적용하지 않아도됩니다.
감사합니다.
UPDATE 아마도 나는 게시물에 조금 너무 많이했다. 몇 가지 실험을 거쳐 기본 데이터 유형을 Decimal
으로 변경하면 문제가 해결된다는 사실을 발견했습니다. Double
의 일반적 표시 할만큼 정확하지처럼
Dim number As Decimal = 0.000023425
someTextBox.Text = number.ToString() ' Shows "0.000023425" instead of "2.3425E-05"
는 그래서 소리?
편집
나는 단순히 원하는 효과를 가지고 그것에 .ToString()
을하기 전에 진수로 더블 값을 캐스팅 found a post (NO upvotes와이기는하지만). 왜 내가 그걸하고 싶지 않은 이유가 있니? 아마도 Decimal
의 캐스트는 Double
과 다른 값으로 끝날 가능성이 있습니다 (무시할만한 양이지만) #,##0.#################...
형식 문자열이 더 안전합니다.
http : //stackoverflow.com/questions/1546113/double-to-string-conversion-without-scientific-notation을 살펴보십시오. Jon Skeet의 유틸리티 클래스는 유망 해 보입니다. – RichardOD
오, 그리고 BTW- 이것은 확실히 바보 같은 질문이 아닙니다! – RichardOD
@RichardOD : Jon의 유틸리티 클래스는 과도한 것으로 보이지만 정확히 내가 원하는 솔루션입니다. 난 정말 19 + 정밀도의 숫자가 필요하지 않으며, 데이터베이스는 어쨌든 정밀도에서 두 배보다 큰 것을 취할 수 없습니다 (도 필요하지 않습니다). 당신이 당신의 코멘트를 대답으로 바꾸면 저는 그것을 기꺼이 대답으로 받아 들일 것입니다. –