为什么以下c#不返回957? (它返回0)

时间:2017-12-14 22:20:28

标签: c#

我对下面的一小段代码感到困惑,因为我无法按照预期返回957。我有点尴尬发帖,但我看不出问题。

using System;

namespace ConsoleApp1
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            Console.WriteLine(ConvertToInteger("957.13"));
        }

        private static string ConvertToInteger(string timeStartIn)
        {
            Int32.TryParse(timeStartIn, out var timeStart);

            return timeStart.ToString();
        }
    }
}

2 个答案:

答案 0 :(得分:4)

您应该检查Int32.TryParse方法帮助。 它说:

  

当此方法返回时,如果转换成功,则包含等效于s中包含的数字的32位有符号整数值;如果转换失败,则包含

由于957.13是表示十进制值的字符串,因此TryParse方法返回0,因为十进制数不是整数。

答案 1 :(得分:0)

您正在处理浮点数或小数类型,使用地板或天花板功能,然后您可以将其转换为完整数字整数。您还可以将其转换为字符串并将其拆分为小数点,然后仅使用第一个段并将其转换为完整的整数。

注意:字符串方法不考虑舍入。