C#Hackerrank代码在30天的代码中对数据类型挑战产生了正确的结果,但是说我错了

时间:2016-12-19 00:03:14

标签: c# types

最近我试图在hackerrank的30天Code挑战中解决第1天的数据类型课程。我遇到了一个奇怪的障碍。编译器一直说我的输出是错误的答案,但我打印出来完全相同的整数double和字符串。 唯一不同的是我的double上没有小数点,这没有意义因为我唯一能做的就是从输入读取,将输入从字符串转换为加倍然后将两个双打加在一起

你能帮忙吗?顺便说一句,这是我的C#代码。

using System;
using System.Collections.Generic;
using System.IO;



class Solution {
    static void Main(String[] args) {
        int i = 4;
        double d = 4.0;
        string s = "HackerRank ";

     //this is the start of my code,the top part is preset by hackerrank
int a=Convert.ToInt32(Console.ReadLine());
double x = Convert.ToDouble(Console.ReadLine());
string l = Console.ReadLine();

Console.WriteLine(a+i);
Console.WriteLine(d+x);
Console.WriteLine(s+l);

Console.ReadLine();

}
}

这里有他们希望我使用的输入:

12
4.0
is the best place to learn and practice coding!

这是我的输出:

16
8
HackerRank is the best place to learn and practice coding!

他们想要的输出:

16
8.0
HackerRank is the best place to learn and practice coding!

你可以看到我的“.0”缺少我的双倍任何帮助吗?

3 个答案:

答案 0 :(得分:1)

您可以使用带有重载的.ToString()格式化结果:

Console.WriteLine((d+x).ToString("#.0"));

0表示默认占位符,如果没有小数点,则会添加0。否则它会显示实际值。

回答你的意见:

#代表.

之前的任何数字

为什么它会剥离您的.0:根据MSDN,Console.WriteLine(double)使用默认string重载表示输出为ToString("G")

  

值的文本表示通过调用生成   Double.ToString方法。 Source

     

一般(" G")格式说明符将数字转换为更多   紧凑的定点或科学记数法,取决于   数字的类型以及是否存在精度说明符。 Source

根据上述文档,如果您要将数据类型更改为decimal而不是double,则应保留.0

答案 1 :(得分:0)

尝试

Console.WriteLine("{0:F1}",d+x);

答案 2 :(得分:0)

您可以添加0.0以使其成为双精度值。