C# 字符串以特定格式浮动

我正在尝试转换以下格式的字符串:30,500转换为浮点数30.500(在 json 中)所以目前我有类似的东西float.Parse(string.Format("{0:00,000}", inp_km.Text), CultureInfo.InvariantCulture.NumberFormat),但是当我将它保存在 json 中时,它会另存为30500.00.


我在这里做错了什么?


我是如何做到的;


我从类中制作了一个对象,Results就像这里一样;


team_results = new Results()

                        {

                            team_number = selected_team.team_number,

                            results = new Result[2] { new Result{ }, new Result { } }

                        };

现在,当我将新值添加到 json(下面的示例)时,我得到的输入是 30,500


[


  {

    "team_number": 101,

    "results": [

      {

        "given_start_time": "20:25",

        "connection_to_start":  "0:00",

        "start_kp": "20:26",

        "stop_kp": "0:0",

        "missed_controls": 0,

        "km": 0.000,

        "gtks": [ "25:00", "30:15", "0:00" ]

      },


      {

        "given_start_time": "21:56",

        "connection_to_start": "0:00",

        "start_kp": "21:57",

        "stop_kp": "0:0",

        "missed_controls": 0,

        "km": 0.000,

        "gtks": [ "25:00", "30:15" ]

      }

    ]

  }


]

但是当它保存时,它会保存为 30500.00


天涯尽头无女友
浏览 186回答 3
3回答

呼唤远方

您试图Format在一个字符串上执行,它只会产生相同的字符串作为结果。您想解析字符串并将IFormatProvider实现传递给Parse“理解”正在解析的数字的字符串表示形式中的含义,和.含义的方法。在下面的示例中,我使用了nl-NL与您在问题中所期望的含义相同的文化(.用于分隔千位和,分隔数字的小数部分)。const string inputText = "30,500";var result = float.Parse(inputText, NumberStyles.AllowDecimalPoint, System.Globalization.CultureInfo.GetCultureInfo("nl-NL"));Console.WriteLine("Parsed {0} to value {1}", inputText, result);

饮歌长啸

您可以创建自定义 NumberFormatInfovar nf = new System.Globalization.NumberFormatInfo();nf.NumberDecimalSeparator = ",";nf.NumberGroupSeparator = " ";并用它来解析数值Console.WriteLine(float.Parse("30,5000", nf));

慕莱坞森

嗯,我有一个解决方案,但它不会是最好的,但它会起作用。当您处理字符串时,您可以使用此函数string converter(string s){s = s.Replace('.',',');return s;}还检查此链接 https://msdn.microsoft.com/en-us/library/czx8s9ts(v=vs.110).aspx
打开App,查看更多内容
随时随地看视频慕课网APP