есть странное поведение двойного разбора ввода строки? - PullRequest
1 голос
/ 31 декабря 2010

Я пытаюсь прочитать какой-нибудь файл Excel и преобразовать строковый столбец, чтобы сохранить в БД.НО я сталкиваюсь лицом к лицу с двойной ошибкой разбора: double result = double.Parse (1,15);результат: 1.149999999999 .... я не хочу видеть это.я хочу двойной результат = double.Parse (1,15);результат = 1,15


 static void Main(string[] args)
        {
            NumberStyles styles;
            IFormatProvider provider;

            styles = NumberStyles.Float;
            provider = CultureInfo.CreateSpecificCulture("tr-TR");

            string test = "1,15";
            double result = double.Parse(test, styles, CultureInfo.CreateSpecificCulture("tr-TR"));
            Console.WriteLine(result.ToString());
        }
    }

Ответы [ 3 ]

1 голос
/ 31 декабря 2010

Используйте тип данных decimal для БД и приложения, если вам нужны типы данных высокой точности.

0 голосов
/ 31 декабря 2010

выглядит как ошибка в коде: двойной результат = float .Parse (); double.parse () должно работать нормально.

0 голосов
/ 31 декабря 2010

Вы анализируете как число с плавающей точкой, но конвертируете в число с плавающей точкой не точно, поэтому вы видите ошибку.

Ваш код должен быть:

double result = double.Parse(...);

а не:

double result = float.Parse(...);

Edit:

Примечание: когда вы конвертируете что-либо в строку, используйте value.ToString("R"), если вы хотите, чтобы произошла передача в оба конца; это будет представлять точное значение в виде строки, а не усеченное значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...