将输入数转换为正确的十进制输出?

时间:2017-08-06 18:07:27

标签: c#

我是一个几乎没有编码知识的新手。感谢所有愿意回答我的人。

在我问之前,我曾尝试在Stackoverflow中查找该问题,但我没有找到任何东西(可能是由于我缺乏经验)。

现在,我的问题是:如何将输入数转换为正确的十进制输出?

我已尝试使用下面的代码(遵循Microsoft虚拟学院的免费课程),但它仅在我删除变量时才有效。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            //string myString = "My \"so-called\" life";
            //string myString = "What if I need a\nnew line?";
            //string myString = "Go to your c:\\drive";
            //string myString = @"Go to your c:\drive";
            //string myString = String.Format("{0} = {1}", "First", "Second");
            //string myString = String.Format("{0:C}", 123.45);
            Console.Write("Insert a number: ");
            var data1 = Console.ReadLine();
            string myString = String.Format("{0:N}", data1);

            Console.WriteLine(myString);
            Console.ReadLine();
        }
    }
}

再次感谢, 亚历

2 个答案:

答案 0 :(得分:2)

  

如何将输入数转换为正确的十进制输出?

我们需要明确我们的术语,所以让我从那里开始。

您的string包含一个数字。你没有号码。 Console.ReadLine()返回一个字符串。它可能包含一个数字,但在描述问题时,将它称之为它是很重要的。

它可能会感到迂腐,但这是一个重要的细节,因为它会影响我们对a)你的代码的理解,以及b)你想要做什么。这两件事并不总是一致的,为了有效地帮助你,我们需要准确而完整地理解这两者。

因此,您的问题应该表述为:

  

如何将包含数字的字符串转换为小数?

现在,回答这个问题:获取字符串并从中提取值的行为称为解析。您想要将字符串解析为十进制数。有了这个,你现在应该对谷歌足够了解。

在C#中,您可以使用Decimal.Parse(...)将字符串解析为十进制数。您可以猜测如何将字符串解析为整数。

换句话说,在您的情况下,您将使用var myDecimal = Decimal.Parse(data1);

答案 1 :(得分:0)

Console.ReadLine的结果总是字符串。 string.Format不够智能,无法将字符串值转换为数字,并在为字符串值请求数字格式时对其进行格式化。

需要将代码更改为以下内容

var data1 = Console.ReadLine();
var decimal1 = Decimal.Parse(data1);
string myString = String.Format("{0:N}", decimal1);