Я только что наткнулся на замечательную «особенность», заключающуюся в том, что .NET по умолчанию использует Double.ToString()
научную нотацию, если имеется достаточно десятичных знаков.
.005.ToString() // ".005"
.00005.ToString() // "5E-05"
Кто-нибудь знает эффективный способ заставить это появиться в виде строки в стандартной (ненаучной) нотации?
Я видел этот вопрос, но два верхних ответа кажутся добрыми для меня, поскольку они оба делают Double.ToString()
, а затем просто переформатируют результаты.
Спасибо за любую помощь.
РЕДАКТИРОВАТЬ:
Желаемый результат:
.00005.ToString() == ".00005"
РЕДАКТИРОВАТЬ2:
Что со всеми повторяющимися и закрытыми голосами? Я специально говорю в вопросе, что на аналогичный вопрос нет удовлетворительного ответа. Люди на этом сайте слишком довольны властью.
МОЕ РЕШЕНИЕ:
Если это кому-то пригодится:
/// <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. Я еще не нашел эффективного способа сделать это для всех значений.
double
вdecimal
, а затем сделатьToString()
. Я не проводил тестирование производительности, которое быстрее,decimal
или строка формата более 300 символов. - person ygoe   schedule 24.03.2016