【问题标题】:Force Excel to understand numbers the way I formatted them强制 Excel 以我格式化它们的方式理解数字
【发布时间】:2010-11-09 16:26:48
【问题描述】:

我在一个软件上做了一些基准测试,现在我必须绘制往返时间的结果。

在实验过程中,我们生成了许多 Syslog 格式 (RFC 5424) 的消息,表明在不同的和受控测试条件下程序处理消息所需的时间。现在我们有几条日志,6 台机器各有 1 条,用于几乎一整天的实验。

我决定使用 Excel 绘制实验时间和 RTT 图表,因此我创建了一个小 C# 实用程序来解析 Syslog 消息并将它们转换为 CSV 选择我想要的字段。

以下是一些用于实验的 Syslog 消息示例

<167>1 2010-10-07T13:29:53+02:00 rosy717 RTTMonitor 4669 - [CallerData@8289 ClassName="RTTMonitor.Program" MethodName="source_MessageReceived" ModuleName="RTTMonitor" LogName="Logfile"][timeQuality tzKnown="1"][origin ip="10.0.0.58" enterpriseId="8289" software="Logbus-ng-sharp" swVersion="1.8.3"][meta sequenceId="50"] RTT: 12.353
<167>1 2010-10-07T13:29:56+02:00 rosy717 RTTMonitor 4669 - [CallerData@8289 ClassName="RTTMonitor.Program" MethodName="source_MessageReceived" ModuleName="RTTMonitor" LogName="Logfile"][timeQuality tzKnown="1"][origin ip="10.0.0.58" enterpriseId="8289" software="Logbus-ng-sharp" swVersion="1.8.3"][meta sequenceId="51"] RTT: 12.775
<167>1 2010-10-07T13:29:59+02:00 rosy717 RTTMonitor 4669 - [CallerData@8289 ClassName="RTTMonitor.Program" MethodName="source_MessageReceived" ModuleName="RTTMonitor" LogName="Logfile"][timeQuality tzKnown="1"][origin ip="10.0.0.58" enterpriseId="8289" software="Logbus-ng-sharp" swVersion="1.8.3"][meta sequenceId="52"] RTT: 12.979
<167>1 2010-10-07T13:30:02+02:00 rosy717 RTTMonitor 4669 - [CallerData@8289 ClassName="RTTMonitor.Program" MethodName="source_MessageReceived" ModuleName="RTTMonitor" LogName="Logfile"][timeQuality tzKnown="1"][origin ip="10.0.0.58" enterpriseId="8289" software="Logbus-ng-sharp" swVersion="1.8.3"][meta sequenceId="53"] RTT: 20.899
<167>1 2010-10-07T13:30:05+02:00 rosy717 RTTMonitor 4669 - [CallerData@8289 ClassName="RTTMonitor.Program" MethodName="source_MessageReceived" ModuleName="RTTMonitor" LogName="Logfile"][timeQuality tzKnown="1"][origin ip="10.0.0.58" enterpriseId="8289" software="Logbus-ng-sharp" swVersion="1.8.3"][meta sequenceId="54"] RTT: 12.971
<167>1 2010-10-07T13:30:08+02:00 rosy717 RTTMonitor 4669 - [CallerData@8289 ClassName="RTTMonitor.Program" MethodName="source_MessageReceived" ModuleName="RTTMonitor" LogName="Logfile"][timeQuality tzKnown="1"][origin ip="10.0.0.58" enterpriseId="8289" software="Logbus-ng-sharp" swVersion="1.8.3"][meta sequenceId="55"] RTT: 12.419
<167>1 2010-10-07T13:30:11+02:00 rosy717 RTTMonitor 4669 - [CallerData@8289 ClassName="RTTMonitor.Program" MethodName="source_MessageReceived" ModuleName="RTTMonitor" LogName="Logfile"][timeQuality tzKnown="1"][origin ip="10.0.0.58" enterpriseId="8289" software="Logbus-ng-sharp" swVersion="1.8.3"][meta sequenceId="56"] RTT: 12.34
<167>1 2010-10-07T13:30:14+02:00 rosy717 RTTMonitor 4669 - [CallerData@8289 ClassName="RTTMonitor.Program" MethodName="source_MessageReceived" ModuleName="RTTMonitor" LogName="Logfile"][timeQuality tzKnown="1"][origin ip="10.0.0.58" enterpriseId="8289" software="Logbus-ng-sharp" swVersion="1.8.3"][meta sequenceId="57"] RTT: 13.622
<167>1 2010-10-07T13:30:17+02:00 rosy717 RTTMonitor 4669 - [CallerData@8289 ClassName="RTTMonitor.Program" MethodName="source_MessageReceived" ModuleName="RTTMonitor" LogName="Logfile"][timeQuality tzKnown="1"][origin ip="10.0.0.58" enterpriseId="8289" software="Logbus-ng-sharp" swVersion="1.8.3"][meta sequenceId="58"] RTT: 12.873
<167>1 2010-10-07T13:30:20+02:00 rosy717 RTTMonitor 4669 - [CallerData@8289 ClassName="RTTMonitor.Program" MethodName="source_MessageReceived" ModuleName="RTTMonitor" LogName="Logfile"][timeQuality tzKnown="1"][origin ip="10.0.0.58" enterpriseId="8289" software="Logbus-ng-sharp" swVersion="1.8.3"][meta sequenceId="59"] RTT: 12.474

所有消息的格式都相同。 RTT 时间以毫秒为单位。不幸的是,当我生成这些日志时,我并不关心指定固定的小数位数,因此一些 RTT 结果看起来像 12.34 毫秒而不是 12.340 毫秒,正如我将要讨论的那样

转换实用程序仅选择一些字段并生成一个 CSV 文件,该文件在最后一列中包含时间戳。如您所见,数字格式使用小数点。不幸的是,在意大利,我们使用十进制逗号并指向组分隔符,因此 Excel 会忽略它并认为 12.419 是 12419,而 12.34 是 1234。如果 Excel 认为这些就可以了数字是微秒,但 1234μs 是 12419μs 的 10 倍。

我的问题是

如何强制 Excel 理解 这些数字 是带小数点的意思?如果我输入自定义的数字格式0.000,那些有2个十进制数字的数字被视为字符串并左对齐

或者

由于我可以根据需要多次重新转换日志,但我不想重复整个实验,你能提醒我在 C# 中如何将双精度数转换为强制 3 位小数的字符串吗?

提前谢谢你

PS:我知道这个问题是在 stackoverflow 和超级用户之间,但在第二种情况下我也询问了 C# 帮助

【问题讨论】:

    标签: c# csv syslog


    【解决方案1】:

    对于您的替代方案,这样的事情应该可以工作:

    myDouble.ToString("f3")
    

    或者,如果您愿意:

    string.Format("{0:f3}", myDouble)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-28
      • 2020-04-30
      • 2021-03-03
      • 1970-01-01
      • 2013-04-22
      • 1970-01-01
      • 2021-01-27
      相关资源
      最近更新 更多