What is the precision of *.datenum, which dir() returns
5 views (last 30 days)
When I apply dir() to a file I get a struct with folder, name, date, bytes, and also datenum. How many significant digits do I need to fully store the number correctly, e.g., when I need to compare two files...
Say I print the number to an ascii file: fprintf(fid,'%.xf',mystruct.datenum) what is x supposed to be?
dpb on 7 May 2018
datenum is a double; hence has 15-16 significant digits; the safest way to store it is as a double but you'll get as close as can with '%.16g'
Jan on 7 May 2018
Edited: Jan on 7 May 2018
The precision of the date depends on the file system. Linux' ext4 file system supports nanoseconds, NTFS uses 100 nanoseconds, FAT has a resolution of 2 seconds.
Under Windows FEX: GetFileTime can reply the native UINT64 file times:
T = GetFileTime(FileName, 'native')
Using this integer avoids rounding and precision problems of the doubles used for Matlab's datenum format.