Я хочу сократить число до первой значащей цифры, которая не равна 0. Цифры позади должны быть округлены.
Примеры:
0.001 -> 0.001
0.00367 -> 0.004
0.00337 -> 0.003
0.000000564 -> 0.0000006
0.00000432907543029 -> 0.000004
В настоящее время у меня есть следующая процедура:
if (value < (decimal) 0.01)
{
value = Math.Round(value, 4);
}
Замечания:
- числа всегда будут положительными
- количество значащих цифр всегда будет 1
- значения больше 0,01 всегда будут округлены до двух знаков после запятой, следовательно, if <0.01
Как видно из приведенных выше примеров, округление до 4 десятичных разрядов может оказаться недостаточным, и значение может сильно различаться.