Здравствуйте, AndrewVK, Вы писали:
S>>Уж слишком неочевидные результаты оно выдаёт для extension-метода.
AVK>Например?
Так в тестах есть. Не, оно как бы логично, но
[TestCase(" \r\n\t\t \v -1.0 \r\n", ExpectedResult = -1.0)]
[TestCase("-Infinity", ExpectedResult = double.NegativeInfinity)]
[TestCase("-infinity", ExpectedResult = null)]
[TestCase("-1.0", ExpectedResult = -1.0)]
[TestCase("- 1.0 ", ExpectedResult = null)]
public double? ToDouble(string str) => str.ToDouble(provider: CultureInfo.InvariantCulture);
заставляет вспомнить js WAT
+ есть ещё одна эпичная мелочь, которая меня всегда убивала. В числах с плавающей точкой по умолчанию
используется
NumberStyles.Float| NumberStyles.AllowThousands
что для строк в русской или немецкой культурах приводит к
double.Parse("1,0", CultureInfo.InvariantCulture); // 10. Приятной отладки.
У нас используется просто Float, что с одной стороны упрощает жизнь, с другой добавляет путаницы.
Может, упростить до AllowLeadingSign | AllowDecimalPoint | AllowExponent, без пробелов? Ну и до AllowLeadingSign для int.