【问题标题】:C# Hackerrank code produces correct results on Data Types challenge in 30 days of code but says I'm wrongC# Hackerrank 代码在 30 天的代码中对数据类型挑战产生了正确的结果,但说我错了
【发布时间】:2016-12-19 00:03:13
【问题描述】:

最近我试图解决hackerrank 30天代码挑战的第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”,有什么帮助吗?

【问题讨论】:

    标签: c# types


    【解决方案1】:

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

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

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

    回答你的cmets:

    # 表示. 之前的任意数字

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

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

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

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

    【讨论】:

    • 所以0代表默认占位符,那么“#”有什么作用呢?
    • 也谢谢,它工作了,但为什么我的小数点消失了?我不想将这个问题标记为已回答,因为我真的需要知道这一点,而且我认为我不应该为此单独发帖。
    • 更新了我的答案
    • 谢谢你,顺便问一下,那个“#.0”功能叫什么?它是一种特殊类型的字符串格式和/或占位符吗?它是 .ToString() 方法独有的吗?
    • 它是ToString()方法的一部分,你可以通过MSDN找到所有的选项
    【解决方案2】:

    试试这个

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2022-08-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-20
        • 2020-02-23
        • 2023-02-25
        • 2015-04-09
        • 1970-01-01
        相关资源
        最近更新 更多