你可以寫你自己的ceil
功能,包括它在任何你輸出的代碼對於目標設備。假設您正在生成C代碼,功能將類似於:
int ceil (double number) {
if (number == 0)
return 0;
if (number > 0) {
if (number - (int) number > 0)
return (int) number + 1;
else
return (int) number;
}
else {
if (number - (int) number < 0)
return (int) number - 1;
else
return (int) number;
}
}
有了一個原型喜歡你的頭文件:
int ceil (double);
現在你的C代碼可以調用integerValuedNumber = ceil(doubleValuedNumber)
,它應該工作。你也可以用macros in the C-file來做到這一點(參見任天堂的回答)。
編輯:我糾正我的代碼,用來C.適當的類型轉換語法,你與(int) number
語法做的是基本上什麼雙值number
變量,並迫使它是一個整數。您可以找到更多關於data types in C here或Google「類型轉換C」或「數據類型C」的更多信息。
此外,可能需要一些額外的括號,如return ((int) number) + 1;
等。我對C編程有點生疏,但希望這可以讓你朝着一個可行的解決方案邁進。
編輯2:我更正了我們自定義的ceil
函數的返回數據類型。你會想要這個返回一個int
,或者long
。同樣,如果您不確定哪種數據類型適合您的應用程序,請查看C中關於數據類型的文檔。如果您申請的值不是很大(例如小於+/- 2^15),那麼int
可能沒問題。
你確定你沒有ceil ...你有沒有在matlab界面上試過ceil(2.3)?這是很奇怪的,你沒有在matalb上的ceil ... – Werner
問題是,在我的ARM代碼內部產生了ceil(),並且它不支持該指令... –