Не знаете, как описать проблему в названии.Проблема с разделителем десятичных значений
Я сохраняю цену (только десятичный, а не валютный формат) для SQL db. На компьютерах с Windows 8, если есть десятичное значение, значение будет перемещаться влево и стать десятичным числом .00.
Например:
120,34 станет 12034.00 в базе данных.
120.00 будет в базе данных 120.00.
В Windows 7, однако, мы не сталкиваемся с этой проблемой.
decimal RetailPrice = Convert.ToDecimal(strPriceValue , CultureInfo.InvariantCulture);
cmd.Parameters.Add("@retail_price", System.Data.SqlDbType.Decimal).Value = RetailPrice;
Тип столбца sql десятичный (16, 2).
Я хотел бы сохранить десятичное значение как есть, и не нужно менять региональные настройки культуры Windows. Исходное значение всегда будет содержать 2 десятичных пространства и a. десятичный разделитель, который, как я хочу, будет сохранен в базе данных.
Я так смущен, почему это происходит, и любая помощь будет принята с благодарностью.
Update:
Простой бросок и удаление преобразования строки, которые устранили эту проблему:
decimal RetailPrice = (decimal)(ds.Tables[1].Rows[m]["Retail_Price"] as double? ?? 0D);
У вас есть настройки валюты по двум различным направлениям (от 0,00 до 0,00), ваш SQL видит 0.00 как 000.00, поэтому его логика в том, что он делает. Чистая функция сборки не существует, насколько я знаю, однако с заменой и подстрокой вы могли бы выполнить эту работу. – user3763117
Какова ценность 'strPriceValue' при попытке? Это важно здесь. Это то, что вы сказали «120.34».? –
Значение, например, будет 221872.81 или 175351. Это значение исходит от другого SQL-сервера db, тип данных которого является float. Таким образом, исходное значение является поплатой, значение назначения равно десятичному значению. Я не могу изменить тип с плавающей точкой исходной базы данных. – Deon