减去日期时间变量时如何停止 Matlab 舍入小数
How can I stop Matlab rounding decimals when subtracting Datetime variables
我在 Matlab 中遇到了一些与日期时间类型变量的舍入误差有关的问题。
我有一个数组,我们称它为“t
”,它的类型是 datetime。
例如,t(2) = 00:01:35.6889999
和 t(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
我在 Matlab 中遇到了一些与日期时间类型变量的舍入误差有关的问题。
我有一个数组,我们称它为“t
”,它的类型是 datetime。
例如,t(2) = 00:01:35.6889999
和 t(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