-2

値を int および float 部分にカットする必要があります。'21' のように - '2' と '1' を int として取得したい。

float fp; // float part
float fp1; // new "int-style" float part
float ip; // int part

fp = modff(21.0/10, &ip);
ip = ip*10; // there i will get the '2'. Its works fine
fp1 = fp*10; // there i will get a null (0.09999999 by debugger, 
but should to be 0.99+)... 

ただし、たとえば「22」など、他の値を使用しても機能します。もいい。どうしたの?:(

この機能はユニットが気に入らないようです

==================================

はい、簡単に直せます!:) 「modff」の代わりに「modf」を使用しました。「double」データ型を持っているため、現在は正常に動作します )

答えてくれてありがとう

4

1 に答える 1

1

浮動小数点では、21.0 / 10.0 を実行すると、通常は 2.1 になりません。浮動小数点の不正確さにより、得られるのは 2.099 またはそのようなものです。

float fp; // float part
float fp1; // new "int-style" float part
float ip; // int part

float value = 21.0;
float part = 10.0;
fp = modf(value / part, &ip);
fp1 = value - (ip * part); //gives you 21 - (2 * 10) = 1

//ip = 2
//fp1 = 1
于 2013-05-22T15:13:16.853 に答える