のうち、小数部分を取得します。私は例えば、フロート数のうち、小数部分を取得する必要があります浮動小数点数
フロートのx = 18.30;
私は別のフロートの「0.30' を取得する方法が必要です。..ので、私はすべてのアイデアをフロートは18.30に等しく、別の1が0.30
に等しいだろうか?
のうち、小数部分を取得します。私は例えば、フロート数のうち、小数部分を取得する必要があります浮動小数点数
フロートのx = 18.30;
私は別のフロートの「0.30' を取得する方法が必要です。..ので、私はすべてのアイデアをフロートは18.30に等しく、別の1が0.30
に等しいだろうか?
は、私はあなたが望む正確な方法をやっ機能があるかどうかわからないが、あなたは、この使用することができます:
x - floor(x)
これはそうかもしれないか、あなたが期待していないx = - 18.3 –
FMODファミリの関数がありますが、例えばをなどFMOD(18.30、1.0)、fmodf(18.30、1.0)、
#include <stdio.h>
#include <math.h>
int main (int argc, const char * argv[]) {
// insert code here...
printf("%f\n", fmod(18.30, 1.0));
return 0;
}
上記の回答(x - floor(x))は正の数では機能しますが、負の数では正解ではありません。代わりに)(TRUNCを使用します。
fmod(x, 1)
注:他の回答で提案されているようにMODFまたはFMODを使用し
x - trunc(x)
しかし、FMOD()ソリューションは、あなたが私に言わせれば使用する1つです。
しかし、あなたの等価要求が示唆するように、atof( "0.30")と正確に同じ数字を持つとは思わないでください。
実際、atof( "18.0" + atof( "0.30")に最も近い浮動小数点数ですが、この操作は正確ではありません。 atof( "0.30")と整数> 0
したがって、整数部分を減算すると、atof( "0.30")を戻す理由はありません。atof( "0.30" ")。 Squeakの/ファロのSmalltalk(ここで使用倍精度)
(1 to: 100) count: [:i | 0.3 + i = (3/10+i) asFloat].
で表現
は
-> 100
を与えます。しかし:
(1 to: 100) count: [:i | (3/10+i) asFloat - i = 0.3].
は
-> 0
を与えます3210
x = 3.5
y = parseInt(3。5)
fraction_part =(x-y);
あなたはFMOD(18.30、1.0をしたいですか)? – gbulmer
または単に 'y1 =(int)x; y2 = x - y1; '、あなたの意図に応じて、負の数でほの暗くなります。 –
@gbulmerよく、fmodf .... – lnafziger