나는 내 케이크를 원하고 그것을 먹는다. 나는 다른 계산의 정확성을 손상시키지 않으면 서 가능한 한 가장 큰 범위까지 숫자를 아름답게 (둥글게) 만들고 싶습니다. C#에서 double을 사용하고 있습니다 (일부 문자열 변환 조작도 있음).잘못된 숫자를 적절히 반올림하여 '미화'번호
여기에 문제가 있습니다. 이중 숫자 표현의 고유 한 제한 사항을 이해합니다 (설명하지 마십시오). 그러나 최종 사용자에게 미적으로 기분 좋게 보이기 위해 어떤 식 으로든 숫자를 반올림하고 싶습니다 (저는 계산기를 만들고 있습니다). 문제는 한 자리에서 X 유효 숫자로 반올림하지만 다른 한 자리에서는 반올림합니다. 반면에 소수 자리로 반올림하는 것은 다른 경우에는 작동하지만 첫 번째 경우에서는 작동하지 않습니다.
지키
사례 A :에서는, Math.sin (Math.PI로) = 0.000000000000000122460635382238
CASE B : 첫 번째 경우에 대해 0.000000000000001/3 = 0.000000000000000333333333333333
, I 진수로 라운드 할 장소. 그것은 내가 찾고있는 멋진 깔끔한 제로를 줄 것입니다. 시그 (SIG) 자릿수로 반올림하면 잘못된 자릿수도 계속 유지하게됩니다.
그러나 두 번째 경우에 소수점 이하를 반올림하면 엄청난 정확성을 잃어 버리게되므로 중요한 디지트로 둥글어야합니다.
두 가지 계산 유형 모두를 수용 할 수있는 일반적인 방법이 있습니까?
에 포기하기 때문에 나는 당신이 배우에 대한 이동 제안 과학적 표기법. 이런 종류의 수학을 사용하는 모든 사용자는 그것을 알게 될 것이며,이 엄청나게 큰 숫자와 작은 숫자를 의도 한 것입니다. – Logarr
과학 표기법에 대해 알고 있습니다. 나는이 같은 완전한 숫자 표현을 사용하여 문제를보고 생각하는 것이 틀림없이 더 간단하게 만들었습니다. –
"그게 내게 멋진 제로를 줄거야." - 과학 표기법의 범위에서 문제는 생각하지 않습니다. 서식 문제는 매우 간단합니다. SN으로 변환 한 다음 소수 자리를 기준으로 표준 반올림을 수행해야합니다. 기본적으로 내가 말하는 것은 계산기를 다시 발명하려고 시도하지 않는 것입니다. – Logarr