Я разрабатываю программное обеспечение, которое использует точность числа, но у меня есть эта проблема, это происходит, что, когда я беру строку для преобразования для удвоения, она производит меня с другой культурой.
Например, я использую
Convert.ToDouble("4089.90"); // it outputs 40.899,00
Странная причина в моем компьютере, это работает хорошо, но на ПК клиента (с той же культурой в региональных настройках) показывает мне последний вывод. Я знаю, что могу зафиксировать его использование
Convert.ToDouble("4089.90", System.Globalization.CultureInfo.InvariantCulture);
Но существует много кода в использовании программы, "Преобразовывают. ToDouble" и я не хотел бы изменять все это, с другой стороны, я хочу понять, почему это происходит.
Вы можете установить культуру для своей темы с:
Thread.CurrentThread.CurrentCulture =
System.Globalization.CultureInfo.InvariantCulture;
Это ваш компьютер, который не дает правильный ответ, а не их. Ваша культура заявляет, что «4089,90» такое же, как 4089900, поскольку точка (.) Используется для разделения тысяч (и, таким образом, должно быть три числа после точки).
Похоже, вы хотите использовать точку в качестве десятично-разделителя, вопреки вашим настройкам культуры; Итак, вы имеют в использовании System.Globalization.CultureInfo.invariantCulture
в вашей программе. Извини.
Я не знаю ни C # ни ASP.NET, но Я думаю, что проблема в том, что вы выполняете операцию в культуре, где точка .
- это тысячи сепаратор, а не десятичный разделитель. Очень вывод вы цитате, является доказательством: 40,899,00
.
Какая культура / локаль вы работаете?
java.sql.ResultSet является интерфейсом, поэтому можно создать собственный класс, реализующий этот интерфейс.
-121--1390552- A Func < T, T1, T2 >
является делегатом. Делегат - это тип, представляющий одну функцию. В C # можно использовать подобные функции вместо объявления определенного интерфейса. Если бы вы хотели, вы могли бы использовать интерфейс, который бы выглядел примерно так:
interface IStrategy
{
T Compute<T1, T2>();
}
-121--3909889- На самом деле очень редко такое поведение, потому что все машины имеют одинаковые настройки культуры, однако я думаю, что лучшим решением было бы изменить web.config так:
configuration>
<system.web>
<globalization culture = "es-HN" />
</system.web>
</configuration
И применить настройки для всего приложения.
Спасибо всем за вашу помощь.
Культура может быть основана на том, где приложение ASP.NET работает, а не клиентский ПК, который запущен браузер. Хотя их настольный компьютер может иметь подобные настройки культуры, сервер может отличаться.
Вы не говорите, где вы находитесь, но вывод согласуется с нынешней культурой, являющейся тем, что имеет «». как тысячи разделитель и десятичная запятая, а не десятичная точка.
Однако вы утверждаете, что культура такая же - что это противоречит этому. У вас или клиент изменились (или настроены) «Стандарты и форматы» на региональных и языковых вариантах? Если настройка была настроена, она все равно будет читаться как «английский (Великобритания)» (или где-либо), но приведет к разным результатам по умолчанию.