Преобразование десятичной дроби в строку показывает разные десятичные значения в разных системах Windows. - PullRequest
0 голосов
/ 03 октября 2019

У меня есть код ac #, работающий в .net Framework 2.0, который при преобразовании десятичной дроби в строку для печати в файле дает разные выходные данные в разных ОС Windows.

Я уже проверил, что обе системы являются регулярныминастройки точно такие же, тот же язык, тот же числовой формат и т. д.

Мой код выглядит следующим образом

object o = dr.GetValue(dr.GetOrdinal(cCol.ColumnName));
string value = Convert.ToString(o);

Он получает значение из базы данных, а объект имеет тип Decimal (o.GetType () == typeof (Decimal) оценивается как true)

Проблема заключается в том, что когда эта программа работает в .net Framework 2.0, но на сервере Windows 2000 вывод не совпадает с выполнением в. Net Framework 2.0 в Windows 10.

Например, для значения 2016

Вывод Windows 2000: «2016»

Вывод Windows 10: «2016.00»

Я попробовал следующее

string value = ((Decimal)o).ToString("0.##"));

Тогда вывод будет таким же для значения 2016. Однако, и вот где это становится сложным, если значение, скажем, 2016.6, вывод с этим новым методомявляется:

Вывод Windows 2000: «2016.60»

Вывод Windows 10: «2016.6»

Поэтому я не могу заставить его выводить одинаково в обоихсистемы.

Что может быть источником проблемы? Есть ли способ получить в Windows 10 тот же вывод, что и в Windows 2000?

Спасибо

1 Ответ

0 голосов
/ 03 октября 2019

Отвечая на мой собственный вопрос, я обнаружил, что проблема в том, что в Windows 2000 драйвер БД иногда возвращает значение как Int, а другие как десятичное, а в Windows 10 всегда десятичное. Так что проблема была в драйвере БД, а не в .net framework.

...