最近我试图在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”缺少我的双倍任何帮助吗?
答案 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以使其成为双精度值。