Считывание реальной переменной

Как считать число с цифрами после точки или запятой в С++? (желательно одной операцией)

Ответ

Мы отклонились от темы и перешли к другой проблеме. Хаха, я нашел ошибку, на самом деле тут все нормально считывает, дело в неправильной арифметической операции
Praytic:
Ну вот, почему то не считает цифру после точки.
Надо было умножать не на i, а на c. А так, он нормально читает числа с точкой. :D


Views: 2 176

nvc123 #1 - 7 years ago 1
Голосов: +1 / -0
тоесть считать
откуда считать число?
Praytic #2 - 7 years ago 2
Голосов: +2 / -0
Оттуда, откуда я ввел его. Например строка: "Введите число: ", а после него надо ввести число , допустим, 5.67. Программа должна занести это число в реальную переменную, а она заносит только число до точки.
nvc123 #3 - 7 years ago 1
Голосов: +1 / -0
ты про консольку?
в консольке передаётся строка
насколько я знаю
Praytic #4 - 7 years ago 2
Голосов: +2 / -0
Прикрепленные файлы
prog #5 - 7 years ago 2
Голосов: +2 / -0
что-то мне подсказывает что разделителем в данном случае считается запятая, а не точка
Praytic #6 - 7 years ago 0
Голосов: +0 / -0
prog:
что-то мне подсказывает что разделителем в данном случае считается запятая, а не точка
Нет, там точно точка. Что еще странно, в пустой программе, если ввести число через точку, программа его записывает в double, но только до 7 символа... Вот вводил число в 10 символов, а потом выводил его:
prog #7 - 7 years ago (изм. ) 2
Голосов: +2 / -0
Еще раз говорю, при вводе попробуй ввести через запятую, не обращая внимания на то, что в коде разделитель это точка.
Ну и да, собственно, считывай строку, а потом уже разбирай на числа любым удобным способом - это куда надежнее чем полагаться на автоматическую разборку.
Praytic #8 - 7 years ago 0
Голосов: +0 / -0
prog:
Еще раз говорю, при вводе попробуй ввести через запятую, не обращая внимания на то, что в коде разделитель это точка.
Ну и да, собственно, считывай строку, а потом уже разбирай на числа любым удобным способом - это куда надежнее чем полагаться на автоматическую разборку.
Еще раз говорю, там не точка, ты думаешь я не проверял? Я думал в си есть нормальная операция присваивания реальных чисел, а разбиение я и так использовал.
nvc123 #9 - 7 years ago (изм. ) 0
Голосов: +0 / -0
Praytic, нормальное есть но не в api
prog, согласен с тем что не надо полагаться на автоматический разбор
если бы api было таким крутым то нафиг бы тогда люди писали либы
Praytic, си(как и почти все подобные яп) для быстроты(или по каким то другим причинам) упрощают тип числа
дабл в флот
флот в инт
и т.д.

А в следующий раз, пожалуйста, ставь точки после предложений вместо enter. В следующий раз просто дам 1 пункт, было же уже такое один раз. Весь этот комментарий может занимать гораздо меньше места.
Это сообщение удалено
Praytic #11 - 7 years ago 0
Голосов: +0 / -0
А в следующий раз, пожалуйста, ставь точки после предложений вместо enter. В следующий раз просто дам 1 пункт, было же уже такое один раз. Весь этот комментарий может занимать гораздо меньше места.
Как все серьезно, может еще и за грамматику пункты давать? И я всегда ставлю точку в конце предложения и не злоупотребляю энтером, не понимаю с чего вы это взяли.
Это я написал новое сообщение после того, а не энтер нажимал. А по теме:
Praytic:
Praytic, нормальное есть но не в api
prog, согласен с тем что не надо полагаться на автоматический разбор
если бы api было таким крутым то нафиг бы тогда люди писали либы
Я так и не понял, что за либы, api. Они мне помогут в моем вопросе? Если да, то что это?
Isstrebitel #12 - 7 years ago 0
Голосов: +0 / -0
И я всегда ставлю точку в конце предложения и не злоупотребляю энтером, не понимаю с чего вы это взяли.
И я не понимаю. Я это для nvc123 написал.
Там же написано "(отредактировано Isstrebitel)".
nvc123 #13 - 7 years ago 0
Голосов: +0 / -0
Praytic, api это функции встроенные в сам яп
cin
cout
system()

уважаемый истребитель
зачем точка если есть enter?
ожидание нормального ответа...
Isstrebitel, кстати поздравляю
ты первый кому не нравится мой enter

Praytic, заноси то что ввели в строку
ищи в строке точку
потом по кускам преобразовывай строку в дабл
GeneralElConsul #14 - 7 years ago (изм. ) 1
Голосов: +1 / -0
Видимо, и вправду для экономии всего 6 символов, при чем не важно, где точка. сам впервый раз столкнулся
Проблема здесь целиком на стороне вывода, т.е. вводится она как надо быть, а вот уже выводится только 6 символов на число.
Если ты хочешь, чтобы у тебя было определённое кол-во знаков после запятой, можно использовать такую вещь:
cout.precision( int i); Где i - количество знаков после запятой(в программе - точки).
гугли "форматированный ввод"
Если у тебя число целых ноль, то отобразятся 10 чисел после точки. Если целая часть однозначное !=0, то 9 знаков, двузначное - 8 знаков, в общем мысль ты понял - или считай предположительно какая будет целая часть или заранее ставь i = большому числу.
Praytic #15 - 7 years ago 0
Голосов: +0 / -0
Praytic, заноси то что ввели в строку
ищи в строке точку
потом по кускам преобразовывай строку в дабл
Так раньше и делал, но думал есть какая-то операция для этого, но все равно спасибо и тебе GenElCon.
prog #16 - 7 years ago -2
Голосов: +0 / -2
Что такое C++? Это С и пара костылей.
Сам я давненько на костылях ничего не писал, так что с запятой действительно промахнулся, хотя и помню что у меня такая беда была, а вот GenElCon дело говорит - беда в параметрах вывода, а не в считывании.
Praytic #17 - 7 years ago (изм. ) 0
Голосов: +0 / -0

Мы отклонились от темы и перешли к другой проблеме. Хаха, я нашел ошибку, на самом деле тут все нормально считывает, дело в неправильной арифметической операции
Praytic:
Ну вот, почему то не считает цифру после точки.
Надо было умножать не на i, а на c. А так, он нормально читает числа с точкой. :D