Раздеоение на цифры - Очень срочно
От: TheAteist  
Дата: 15.11.08 12:28
Оценка: :)
То что я пытался сделать это разделить пятизначное число на цифры следующим образом.
Например число 12345:


float fNum = 12345;
int iNum;

iNum = fNum; //fNum = iNum = 12345 

//Первый цыкл
(fNum / 10 - iNum / 10) * 10 // => ((float)12345/10 - (int)12345/10) * 10 = 0.500000000000000000 * 10 = 5.000000000000000, сохраняю эту цифру
fNum = (fNum / 10) - ((fNum / 10 - iNum / 10)) // => (float)12345/10 - ((float)12345/10 - (int)12345/10) = 1234.50000000000000-(1234.50000000000000 - 1234)= 1234.50000000000000 - 0.500000000000000 = 1234.0000000000000=> fNum = 1234.0000000000000
iNum = fNum; // iNum = 1234
//Второй цыкл
(fNum / 10 - iNum / 10) * 10 // => ((float)1234/10 - (int)1234/10) * 10 = 0.40000000000000568 * 10 = 4.000000000000568, сохраняю эту цифру
fNum = (fNum / 10) - ((fNum / 10 - iNum / 10)) // => (float)1234/10 - ((float)1234/10 - (int)1234/10) = 123.40000000000001-(123.40000000000001 - 123)=123.40000000000001 - 0.4000000000000568=> fNum = 123.00000000000000
iNum = fNum; // iNum = 123
//Третий цыкл
(fNum / 10 - iNum / 10) * 10 // => ((float)123/10 - (int)123/10) * 10 = 0.3000000000000071 * 10 = 3.0000000000000718, сохраняю эту цифру
fNum = (fNum / 10) - ((fNum / 10 - iNum / 10)) // => (float)123/10 - ((float)123/10 - (int)123/10) = 12.30000000000001-(12.30000000000001 - 12)=12.30000000000001 - 0.300000000000071=> fNum = 12.00000000000000
iNum = fNum; // iNum = 12
//Четвертый цыкл
(fNum / 10 - iNum / 10) * 10 // => ((float)12/10 - (int)12/10) * 10 = 0.1999999999999996 * 10 = 1.999999999999996, сохраняю эту цифру

Как уже видно в четвертом цыкле уже получается не 2.00000000000000, а 1.99999999999999999 и тогда созраняается не 2, а 1.
И после всех цыклов получается
iDigits={1,1,3,4,5}, a не {1,2,3,4,5}

Надеюсь, что я себя правильно объяснил.
Мне нужно таким способом это сделать. Где мне что-то добавить или исправить?

Спасибо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.