2017-03-02 21 views
0

例如,我的單元格包含2個double值和一個int64值。如果單元格包含int,cell2table會將double值截斷爲int

>> cell2table({1.4;int64(4);3.2}) 

ans = 

    Var1 
    ____ 

    1 
    4 
    3 

但是在轉換之後,它們不會被轉換爲int。這是預期的嗎?

+0

你的意思是問在運行cell2table後雙*是否轉換爲整數?因爲所有的ans值都是整數,似乎與你的問題相矛盾。 – Cecilia

回答

0

你是什麼意思的「轉換後」?你把桌子換成別的東西了嗎?

運行這些行告訴我該表中的數字實際上是int64。

>> A = cell2table({1.4;int64(4);3.2}) 

A = 

    Var1 
    ____ 

    1 
    4 
    3 

>> class(A.Var1) 

ans = 

int64 

>> class(A.Var1(1)) 

ans = 

int64 

>> class(A.Var1(2)) 

ans = 

int64 

>> class(A.Var1(3)) 

ans = 

int64 

編輯:cell2table執行轉換。證明:

>> tt = {1.4;int64(4);3.2} 

tt = 

    [1.4000] 
    [  4] 
    [3.2000] 


>> class(tt{1}) 

ans = 

double 

>> class(tt{2}) 

ans = 

int64 

>> class(tt{3}) 

ans = 

double 

在單元陣列的數據類型仍是double

+0

在cell2table的參數中,1.4和3.2仍然是雙倍的。 cell2table是否將它們轉換爲int64? –

+0

請參閱更新的答案。 – Yvon

+0

這是cell2table的預期行爲嗎?我曾認爲它不會做任何隱式轉換。例如,cell2table({1;'a'; 4})不會將任何double或字符串轉換爲其他數據類型。如果存在int64值,爲什麼將double值轉換爲int64? –