2017-03-02 10 views
0

たとえば、myセルには2つのdouble値と1つのint64値が含まれます。セルがintを含む場合、cell2tableはdouble値をintに切り捨てます

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

ans = 

    Var1 
    ____ 

    1 
    4 
    3 

ただし、変換後はintに変換されません。これは期待されていますか?

+0

cell2tableを実行した後で倍精度*がintに変換されているかどうかを尋ねることを意味しましたか?あなたの質問に矛盾していると思われるint値です。 – 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変換を行います。証明:データ型が依然としてdoubleあるセルアレイ内

>> 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 

+0

cell2tableの引数では、1.4と3.2はまだ二重です。 cell2tableはint64に変換しますか? –

+0

更新された回答をご覧ください。 – Yvon

+0

これはcell2tableの予想される動作ですか?私は暗黙の変換を行わないと思っていました。たとえば、cell2table({1; 'a'; 4})は、doubleや文字列を他のデータ型に変換しません。 int64値がある場合、double値がint64に変換されるのはなぜですか? –

関連する問題