![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| 001dark |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 13.3.2007 Репутация: нет Всего: нет |
ввожу 11.11 выдает 11.00 с какого так ? как сделать так что бы scanf брал не больше трех символов в целой части и двух в дробной запихивалось это в переменную типа CHAR --- второй вопрос |
|||
|
||||
| Voldemar2004 |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: нет Всего: 23 |
001dark, а тебе не кажется, что
res, num где у тебя используется ?
-------------------- i_i (';') (V) ![]() |
||||||||||
|
|||||||||||
| nickless |
|
|||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 19 Всего: 181 |
Но d это float, а i - int 001dark, а ты вводил 11,11 или 11.11 ? А то может дробная часть вообще не считалась... А код твой у меня работает. Почти. Выводит 11,10 , потому что 11.11 не может быть точно представлено в двоичном виде, так что в d может быть что-то вроде 11.109999999999999. Для чего тебе нужна дробная часть? Если просто для вывода, то лучше использовать форматирование, если для вычислений, то лучше используй округление round() -------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
|||
|
||||
| zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
неа, в нормальном компиляторе должно работать (возможно результат не тот что ожидаешь получишь только дело происходит так: u=(d-i)*100 1. i преобразовывается к float 2. считается разность, тип - флоат 3. 100 преобразовывается к флоат 4. считается произведение, тип - флоат 5. произведение из флоат преобразовывается к инт, результат присваивается u 001dark, попробуй нагло все к float привести: (float)i
|
|||
|
||||
| 001dark |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 13.3.2007 Репутация: нет Всего: нет |
не будет u всегда равно 0 (я опечатался выдает 11.10 вместо 11.11 ) ,он его округляет почему так
res,num используются дальше они нам не важны Это сообщение отредактировал(а) 001dark - 17.4.2007, 23:10 |
|||
|
||||
| Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: нет Всего: 23 |
Пардон, да не будет, если вводить дробное число. Я вводил целое.
-------------------- i_i (';') (V) ![]() |
|||
|
||||
| 001dark |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 13.3.2007 Репутация: нет Всего: нет |
|
|||
|
||||
| nickless |
|
|||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 19 Всего: 181 |
Я ж говорю, в d не 11.11, a примерно 11.10999999999999, а ты просто отбрасываешь все цифры после второй, а надо округлять. -------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
|||
|
||||
| zkv |
|
||||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
001dark,
пишем:
ясно? |
||||
|
|||||
| nickless |
|
|||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 19 Всего: 181 |
Это не С, это процессор виноват Где-то тут недавно была такая тема про округления... А, вот она, почитай, там всё написано -------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
|||
|
||||
| betal |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 26.12.2006 Репутация: нет Всего: 1 |
%.2f Добавлено через 3 минуты и 28 секунд Точно. Может попробывать int -> float а потом уже проводить вычитания. Или на конец после числа int ставить "." Если я ничего не путаю то вродебы так преаброзовывать --------------------
101100010100001101100001110100101111011легкие деньги |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |