.Net 문자열 포맷터를 사용하여 최소한 하나의 유효 숫자를 표시하는 최소 정밀도 자릿수를 찾는 알고리즘을 작성하려고합니다.최소 정밀도 찾기
예 :
Value Precision wanted:
----- -----------------
10 0
1 0
0.1 1
0.99 1
0.01 2
0.009 3
을 (따라서 0.99은 (1)의 정밀도를 필요로, 첫 번째, 더 숫자에 대한 상관 없어) 내가 가지고 올 수있는 최선은 다음과 같습니다
int precision = (int)Math.Abs(Math.Min(0, Math.Floor(Math.Log10(value))));
이것은 정상적으로 작동하지만 좀 더 우아한 해결책이 있다고 생각할 수는 없습니다. 어떤 수학 전문가가 나를 도울 수 있습니까?
"더 간단한"해결책은 아마도 IEEE 부동 소수점 표현을 활용할 것입니다. –
NB 0.99는 중요한 숫자로 반올림되어 0.9가 아니며, 1입니다. -이 점에 유의하든 그렇지 않든 확실하지 않습니다. – Rawling
@Rawling 언급했으나 실제로 가치 감사를 표시하지는 않습니다. – GazTheDestroyer