標籤:

matlab把日期轉換成數字以後輸出到csv文件,數字會四捨五入?

比如說"2009/10/9"用datenum變成數字是734055,matlab工作區里也顯示是734055,為什麼用csvwrite輸出到csv文件里就變成734060了?


題主,你在Command Window輸入:

&>&> help csvwrite

你會發現在notes里有一條:

csvwrite writes a maximum of five significant digits. For greater precision, call DLMWRITE with a precision argument.

csvwrite最多支持五個數位的精度,你要寫入734055,顯然會自動從低位開始截斷(四捨五入),為了獲取更高的精度寫入,推薦用函數dlmwrite.

簡單的舉個例子:

&>&> number = datenum("2009/10/9");
&>&> dlmwrite("C:/Users/013/dateNumber.csv", number)

但是你會發現「然並卵」,結果顯示仍舊是734060.......

那該怎麼辦呢?老辦法,還是萬能的help.

&>&> help dlmwrite

你會發現需要通過相關屬性設置來控制寫入的數值精度,採用C形式的格式化字元串『%10.5f』之類。

你的問題直接通過設定『precision』為『%6d』就能搞定:

&>&> dlmwrite("C:/Users/013/dateNumber.csv", number, "precision", "%6d")

「沒事兒多help才是解決問題的捷徑。」


謝邀,來遲,我一般是用xlsread,好像沒怎麼碰到這種問題。看到CHNL4回答得有圖有真相,我就不來湊合了 為CHNL4點贊


推薦閱讀:

Matlab在金融領域有什麼具體應用嗎?
如何評價新出的MATLAB R2017b?
在醫學圖像領域,python可以取代matlab嗎?

TAG:MATLAB |