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



最近,我试图解决Hackerrank 30天代码挑战的第1天数据类型课程,我遇到了一个奇怪的路障。编译器一直说我的输出是错误的答案,但我打印出完全相同的整数双重和字符串。唯一不同的是我的双重小数点没有小数点,这是没有意义的,因为我唯一完成的是从输入中读取,将输入从字符串转换为一个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",我的双倍有任何帮助?

您可以将.ToString()与超载一起使用以格式化结果:

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

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

回答您的评论:

#表示.

之前的任何数字

为什么在您的情况下剥离.0:根据MSDN,Console.WriteLine(double)使用默认的ToString("G") Overload表示输出为string

值的文本表示是通过调用 双重键盘方法。来源

常规(" g")格式指定器将一个数字转换为更多 固定点或科学符号的契约,具体取决于 数字的类型以及是否存在精确规范符。来源

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

尝试此

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

您可以添加0.0以使其达到双重值。

最新更新