Console Input/Output problem 5 Formatting Numbers
Здравейте, колеги, имам малък проблем с петата задача. Бих искал да ви попитам как точно правите така, че числото в двуична бройна система да застане след това в шестнадесетична. Защото на мен ми излиза само в края чрез следното решение:
using System;
class FormattingNumbers
{
static void Main()
{
Console.WriteLine("Number A: ");
int a = int.Parse(Console.ReadLine());
Console.WriteLine("Number B: ");
double b = double.Parse(Console.ReadLine());
Console.WriteLine("Number C: ");
double c = double.Parse(Console.ReadLine());
Console.WriteLine("Result = |{0,-10:X} |{1,10:F2} | {2,-10:F3}", a, b, c + " | " + Convert.ToString(a, 2).PadLeft(10, '0'));
}
}
Предварително Благодаря :)
Здрасти,
според мен е направено така, понеже целите числа няма смисъл да се пишат с десетична запетая и 0 и идеята е да ползваш проверка дали числото е цяло и ако е, да не слагаш 0 отзад.
Hi,
И на мен това ми направи впечатление - в горният случай ми излиза output 3.00, което не е точно 3, както е в примера :). Може би имам някаква грешка в кода?
using System;
class FormatingNumbers
{
static void Main()
{
Console.Write("Enter a: ");
int a = int.Parse(Console.ReadLine());
Console.Write("Enter b: ");
float b = float.Parse(Console.ReadLine());
Console.Write("Enter c: ");
float c = float.Parse(Console.ReadLine());
string d = Convert.ToString((int)a, 2);
if (a >= 0 && a <= 500)
{
Console.WriteLine("|{0,-10:X}|{1,10}|{2,10:F2}|{3,-10:F3}|", a, d.PadLeft(10, '0'), b, c);
}
else
{
Console.WriteLine(" \"a\" should be an integer between 0 and 500");
}
}
}
Здравей, колега.
Пробвай вместо с F2 и F3 за второто и третото число това : {2,10:0.##}|{3,-10:0.000}. Така при мен всичко излиза както е в примера.
Поздрави.
Много благодаря :)
Като ползвам {2,10:0.##}, на първия пример, където второто число е 11,6, резултата излиза 11,6, а не 11,60 както е зададено. # не добавя нули за да запълни броя цифри след десетичната запетая, което за целите числа върши работа, но при 11,60 не става. Единствено с проверките дали b == (int)b и c == (int)c успявам да получа резултатите от примера.
В условието наистина пише да се представят с 2 и 3 цифри след десетичната точка, но в примера при 11,6 и 3 няма нули и за това ползвах "#". Може и да съм се подвел :)
Абсолютно си прав, в примера се вижда че нули след 3 няма - значи трябва да се ползва 0.## 0.### ,
но пък това води до проблема за който говори Manoela.