我正在尝试转换以下格式的字符串: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 { } }
};
Run Code Online (Sandbox Code Playgroud)
现在,当我将新值添加到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" ]
}
]
}
]
Run Code Online (Sandbox Code Playgroud)
但是当它保存时,它会将其保存为 30500.00
您正在尝试对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);
Run Code Online (Sandbox Code Playgroud)