![]() |
|
|
![]()
|
|
| kkojot |
|
|||
|
Unregistered |
При преобразовании double в CString появляются некоторые странности
имеется следующий код: ... CString m_strNumber; double d; d=3.0000000025; m_strNumber.Format("%.20f",d); ... в результате имеем: m_strNumber: 3.00000000250000020000 ///////////////////////////////// при d=3.000000000000065; в результате имеем: m_strNumber: 3.00000000000006480000 ///////////////////////////////// и так далее. Откуда берутся такие результаты? Если есть решения борьбы с этим, помогите пожалуйста. |
|||
|
||||
| Tneiro |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 5.10.2004 Где: Одесса Репутация: нет Всего: 1 |
причина в том что double хранится как 1/на что-то потом складывается
как боротся или округлять или умножать на 10 ,чтобы перевести его в целое если тебе надо использовать после запятой 20 символов != 8 бит CString str,str2; double d,g; d=7.2658362865823933332222; g=7.2658362865823933332222; str.Format("%.20f %.20f",d,g); AfxMessageBox(str); |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |