フィルターのクリア

Division in stateflow is showing only integer part

1 回表示 (過去 30 日間)
Aditya
Aditya 2013 年 3 月 15 日
編集済み: chaitanya balaga 2019 年 11 月 20 日
I am trying to do a simple division operation in stateflow like a=5/2 but the output is coming to 2 instead of 2.5 The data type of a is double. Its rounding the decimal digits and giving me only the integer part. Pls help
  1 件のコメント
Vishal Rane
Vishal Rane 2013 年 3 月 15 日
Just noticed that using 5.0/2.0 instead of 5/2 gives you 2.5.

サインインしてコメントする。

回答 (3 件)

Vishal Rane
Vishal Rane 2013 年 3 月 15 日
編集済み: Vishal Rane 2013 年 3 月 15 日
I believe typecasting both dividend and divisor as double should do the job.
{
a = double(5)/double(2);
}
Not sure whether this the usual approach.
  1 件のコメント
Aditya
Aditya 2013 年 3 月 16 日
Thanks Vishal for the answer. But we don't need to typecast both numerator as well as denominator. Typecasting only numerator will do the job. And if we are giving num and deno as input variables from simulink then keeping the data type of those parameters as double will also give write answer

サインインしてコメントする。


Aditya
Aditya 2013 年 3 月 19 日
But still the question remains that why stateflow is doing floor(a/b) and giving 2 instead of 2.5. Is typecasting only solution in this case or is there a specific setting where we can avoid rounding of the integers. Simulink works fine in this case. Problem is only in stateflow.

chaitanya balaga
chaitanya balaga 2019 年 11 月 20 日
編集済み: chaitanya balaga 2019 年 11 月 20 日
Instead, you can try the following assignment, a:=5/2;
This overrides the floor(a/b) behaviour in stateflow and gives you the desired result which is entirely dependent on the datatype of a. In this case you will get a = 2.5

カテゴリ

Help Center および File ExchangeComplex Logic についてさらに検索

タグ

製品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by