减去日期时间变量时如何停止 Matlab 舍入小数

How can I stop Matlab rounding decimals when subtracting Datetime variables

我在 Matlab 中遇到了一些与日期时间类型变量的舍入误差有关的问题。

我有一个数组,我们称它为“t”,它的类型是 datetime。 例如,t(2) = 00:01:35.6889999t(1) = 00:01:35.3549042

如果我尝试做 t(2)-t(1),我得到的只是 00:00:00 的 'duration' 类型的答案。

我想找出这些时间之间的差异并保持精度! 任何帮助或指向直接 cater/relate 解决此类问题的链接的说明,我们将不胜感激!我不太熟悉在 Matlab 中使用日期时间和持续时间类型的变量!

额外信息:我正在使用 Matlab R2017a

编辑:我的脚本中写有 Format Long;

如果两个日期只有秒数不同,这应该有效

second(t(1))-second(t(2))

精度不会丢失,您只需要更改 display format

默认显示格式为HH:MM:SS:

>> A = duration(0, 0, 0, 1.25) % 1.25 MS

A = 

  duration

   00:00:00

您可以修改格式以显示小数部分。例如:

>> A.Format = 's'  % Seconds only

A = 

  duration

   0.00125 sec

>> A.Format = 'hh:mm:ss.SSSSSSSS'  % HMS, up to 9 fractional second digits

A = 

  duration

   00:00:00.00125000

您还可以使用辅助函数,例如 milliseconds or seconds 到 return double 数组:

>> seconds(A)

ans =

    0.0013

>> milliseconds(A)

ans =

    1.2500

持续时间对象实际上具有适当的精度。它只是不显示它,除非你设置格式。

>> dur = duration(t(2) - t(1), 'Format', 's')
dur = 
  duration
   0.3341 sec

无论是否设置格式,都可以直接从duration对象中抓取秒数。

>> format long
>> seconds(dur)
ans =
   0.334095700000000
>> seconds(t(2) - t(1))
ans =
   0.334095700000000