最近,我试图解决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以使其达到双重值。