我想將浮點數分成兩個單獨的部分作爲實部和非實部。 例如:如果x = 45.678
,那麼我的功能必須給real= 45
和non_real=678
。我已經嘗試了以下邏輯。通用函數提取沒有Floor的float的小數部分()
split (float x, unsigned int *real, unsigned int *non_real)
{
*real = x;
*non_real = ((int)(x*N_DECIMAL_POINTS_PRECISION)%N_DECIMAL_POINTS_PRECISION);
printf ("Real = %d , Non_Real = %d\n", *real, *non_real);
}
其中N_DECIMAL_POINTS_PRECISION = 10000
。它會給小數部分,直到4位數字,而不是之後。
它只適用於特定的小數點精度。該代碼不是通用的,它必須適用於所有浮動數字,例如9.565784
和45.6875322
等等。所以如果有人能夠幫助我,這將是非常有益的。
在此先感謝。
請選擇毒藥? C還是C++? –
@EdHeal似乎在片段中沒有C++代碼。 –
你可以轉換爲字符串並按點分割。在你的問題中有一個問題:小數部分是理論上無限的,所以不能適合一個整數,它可能會返回68799像68799000001取決於精度... –