Я просто наткнулся на замечательную "функцию", которую .NET по умолчанию будет использовать Double.ToString()
с использованием научной нотации, если будет достаточно десятичных знаков.
.005.ToString() // ".005"
.00005.ToString() // "5E-05"
Кто-нибудь знает эффективный способ заставить это появиться в виде строки в стандартной (ненаучной) нотации?
Я видел этот вопрос, но два первых ответа кажутся мне взломанными, поскольку они оба делают Double.ToString()
, а затем просто переформатируют результаты.
Спасибо за любую помощь.
EDIT:
Желаемый результат:
.00005.ToString() == ".00005"
EDIT2:
Что со всеми дублирующими и закрытыми голосами? Я конкретно говорю в вопросе, что подобный вопрос не имеет удовлетворительного ответа. Люди на этом сайте получают слишком сильную радость.
МОЕ РЕШЕНИЕ:
В случае, если это полезно для всех:
/// <summary>
/// Converts the double to a standard notation string.
/// </summary>
/// <param name="d">The double to convert.</param>
/// <returns>The double as a standard notation string.</returns>
public static String ToStandardNotationString(this double d)
{
//Keeps precision of double up to is maximum
return d.ToString(".#####################################################################################################################################################################################################################################################################################################################################");
}
ПРИМЕЧАНИЕ. Это работает только для значений > 1. Я еще не нашел эффективного способа сделать это для всех значений.