Управление форматированием вывода при вводе данных - C#
Формулировка задачи:
Вот такой код , ведется диалог с пользователем , пользователь вводит цифры
Вот такая часть кода не позволяет управлять форматированием вывода данных, например сдвинуть значение вправо, разделить вводимое число по знакам , например Для того, чтобы ввести дробное число требуется вводить "
static void Main(string[] args)
{
Console.Write("Введите сумму вклада : = ");
decimal amountOfDeposit = decimal.Parse(Console.ReadLine());
Console.Write("\nВведите процентную ставку\n по вкладу (%) (1,2 ...13,4 и т.д :) = ");
decimal rateOfInterest = decimal.Parse(Console.ReadLine());
Console.Write("\nВведите срок вклада (количество дней): days = ");
decimal days = decimal.Parse(Console.ReadLine());
Console.Write("\nВведите количество дней в году: numOfDaysYear = ");
decimal numOfDaysYear = decimal.Parse(Console.ReadLine());
decimal sumPersent = (amountOfDeposit * rateOfInterest * days) / (numOfDaysYear * 100);
NumberFormatInfo formatInfo = new NumberFormatInfo(); // создаем объект (using System.Globalization; - пространство имен )
formatInfo.CurrencySymbol = "руб."; // задаем символ для валюты (можно изменять по желанию)
formatInfo.CurrencyPositivePattern = 3; // способ расположения символа (может принимать значения от 0 до 3)
Console.WriteLine(String.Format(formatInfo, "\n Через {0,2} дней,\n к вашему вкладу начислят сумму : {1,25:C2}\n", numOfDaysYear, sumPersent));// используем String.Format, потому что он позволяет применить наш формат при выводе
Console.ReadLine();
}100000
записать как100 000
Console.Write("Введите сумму вклада : = ");
decimal amountOfDeposit = decimal.Parse(Console.ReadLine());,
" , точка не воспринимается почему-то (таким образом работа на правом цифровом блоке клавиатуры - неудобна, там точка не воспринимается как разделитель дробной части) Подскажите пожалуйста как можно решить данные вопросы ? Спасибо.Решение задачи: «Управление форматированием вывода при вводе данных»
textual
Листинг программы
using System;
class Program
{
static void Main()
{
ConsoleKeyInfo cki = new ConsoleKeyInfo();
string s="";
for (int i = 1; (cki = Console.ReadKey(true)).Key != ConsoleKey.Enter;)
{
if (cki.Key == ConsoleKey.Backspace && s.Length > 0)
{
s = s.Substring(0, s.Length - 1);
Console.Write("\b");
i--;
}
if(char.IsDigit(cki.KeyChar))
{
s += cki.KeyChar;
Console.Write(cki.KeyChar);
if (i % 3 == 0) Console.Write(" ");
i++;
}
}
int num = int.Parse(s);
Console.WriteLine("\n{0}",num);
Console.ReadKey(true);
}
}