Очевидно, единственный ответ, который каждый может придумать, - это тривиальный (конкатенация между точкой и разбор его). Но тогда сделайте это правильно, пожалуйста! (Я дал достаточно подсказок!) В моей системе, например, десятичный разделитель является запятой, поэтому весь ваш код не будет работать. Вы должны сделать это в нейтральной культуры, например:
string integerPart = "500";
string fractionalPart = "45";
decimal result = Decimal.Parse(
// Combine the strings to a new string "500.45"
String.Format("{0}.{1}", integerPart, fractionalPart),
// We allow a leading sign "-500.45", and a decimal point
NumberStyles.AllowLeadingSign | NumberStyles.AllowDecimalPoint,
// We use a neutral culture in which the decimal separator is a dot (.)
CultureInfo.InvariantCulture);
Если строки пользовательского ввода, вы должны использовать TryParse
вместо и обрабатывать случай, когда он выходит из строя из-за неправильного ввода данных пользователем:
decimal result;
if (!Decimal.Parse(
String.Format("{0}.{1}", integerPart, fractionalPart),
NumberStyles.AllowLeadingSign | NumberStyles.AllowDecimalPoint,
CultureInfo.InvariantCulture,
out result))
{
// Handle invalid user input.
}
'string txt1 = 500' Что? –
@ SonerGönül, это опечатка, холод! – Liam
typo's можно считать ошибками, если копия OP копируется дословно, то они обычно жалуются, что они не работают, если они новы для кодирования и не знакомы с использованием Intellisense. – MethodMan