Light or Dark
offline
Опыт:
7,275Активность: |
Вопрос С++
Есть переменная типа float. Если её выводить через printf("%f", x); , то она будет выводиться со стопкой нулей, в стиле 100.0000000000. Хочу узнать, как выводить в си float в виде 100, 100.00 и тд? Т.е. как регулировать число знаков после запятой в выводе? |
29.10.2011, 19:25 | #1
+1/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hanabishi
COOL STATUS
offline
Опыт: отключен
|
Light_or_Dark, как вариант, конвертить в строку и её уже обрубать. |
29.10.2011, 19:32 | #2
+0/−2
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
WaterMan
J.R.R.
offline
Опыт:
17,019Активность: |
Hanabishi, не нужно лишний раз переменные объявлять, они занимают много места. Тем более, бывают программы, когда каждый байт на счету. Вообще, должен быть простой способ. В паскале, например, write(peremennaya:1:0) - 0 знаков после запятой. Попробуй в c++ так же сделать. |
29.10.2011, 19:34 | #3
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Light or Dark
offline
Опыт:
7,275Активность: |
Не работает, как в паскале, пробовал уже =( |
29.10.2011, 19:35 | #4
+1/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Wolfeg
oldfag
offline
Опыт:
23,007Активность: |
как то так
Код:
это если iostream использовать. Wolf добавил: а printf возможно будет ("%c", x) если я правильно помню старый синтаксис :D Wolf добавил: хотя ща в vs2010 проверил, через %c не выводит ваще нифига. ща проверю функцию char Wolf добавил: хотя даже переводя флоат в чар он выводит значок а не цифры. над подумать |
29.10.2011, 22:28 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Ajaccio
offline
Опыт:
1,007Активность: |
Где X - число знаков, ну и Y - само число.
Используется округление по правилам математики, если X меньше числа знаков после запятой. Число 0 в записи "0.Xf" тоже что-то вроде означает... Для cout:
|
29.10.2011, 22:52 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alexprey
познающий Unity
offline
Опыт:
68,501Активность: |
Цитата:
Может быть ширину? |
|
29.10.2011, 23:10 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Wolfeg
oldfag
offline
Опыт:
23,007Активность: |
это насильное ограничение а не убирание нулей. сколько гуглил ниче не нашел. единственный вариант это юзать #include <iostream> и использовать функцию cout для вывода, она сама обрезает нули
Wolf добавил: Код:
Wolf добавил: нашел ещё такое решение но по моему это извращение Код:
|
29.10.2011, 23:21 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hellfim
Новичок
offline
Опыт:
79,880Активность: |
Light_or_Dark, ты уж определись что тебе надо.
printf это си, а не с++. Если ты хочешь писать именно в си, то почитай как устроен printf: www.codenet.ru/progr/cpp/spru/printf.php
Это первая ссылка в гугле.
Если ты хочешь писать на c++, то используй метод для std:cout, который предложил Ajaccio.
Wolf, я уверен почти на 100%, что ему важны не сами нули, а количество знаков после запятой. |
29.10.2011, 23:44 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Wolfeg
oldfag
offline
Опыт:
23,007Активность: |
printf можно и c+ юзать но это уже устаревший метод
так что iostream и cout cin тебе в руки |
30.10.2011, 10:49 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hellfim
Новичок
offline
Опыт:
79,880Активность: |
Wolf, это не устаревший метод :facepalm: это "метод" языка си. То, что язык с++ обратно совместим с языком си не делает методы языка си устаревшими. |
30.10.2011, 22:46 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
WaterMan
J.R.R.
offline
Опыт:
17,019Активность: |
Hellfim, это C++ ведь, можно asm использовать например, это ассемблер интегрированный. C++ в основном просто расширенный C. Тогда по-твоему и {} и циклы и #include - все это C, а не C++ |
31.10.2011, 18:44 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|