字符串串联在包含双精度数时修改双精度数'|'



我不明白为什么这段代码会这样。我必须返回特定格式的字符串。看起来当我在字符串上包含"|"字符时,它后面的数字会被修改。

为什么会这样?"|"是否以某种方式再次转换双精度值?

static int Main(string[] args) {
.........
connectionString = connectionString.Replace("'master'", databaseName);
var watch = System.Diagnostics.Stopwatch.StartNew();
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
}
watch.Stop();
string spentTimeString = String.Format("{0:0.##}", watch.ElapsedMilliseconds / 1000f);
string msg = $"Connection Time " + spentTimeString + "s.";
string perfData = "'connection_time'=" + String.Format("{0:0.##}", watch.ElapsedMilliseconds / 1000f);
string result = Ok(msg, perfData);
......
}

public static string Ok(string message, string perfData)
{
Console.WriteLine($"Msg: {message}");
Console.WriteLine($"PerfData: {perfData}");
string result = string.Concat("OK: ", message, "|", perfData);
Console.WriteLine($"Result: {result}");
return result;
}

这是我看到的控制台输出:
Msg:连接时间0.42
s.PerfData:"connection_time"=0.42
结果:正常:连接时间 0.42s.|'connection_time'=0.41999

您可以清楚地看到在串联发生后 0.42 get 如何转换为 0.41999。我该如何解决这个问题?

我现在要关闭这篇文章,因为它似乎不是 c# 的问题。看起来 NSClient++ 在返回后正在更改此值。

不过我不确定,我会把它发布在适当的部分。

谢谢大家!.

最新更新