Тема: Маю задачу
Я повинен за допомогою лише лiнiйних операторiв(без використання бiблiотек) "обрiзати" float до двох знакiв пiсля коми.
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C++ → Маю задачу
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
Я повинен за допомогою лише лiнiйних операторiв(без використання бiблiотек) "обрiзати" float до двох знакiв пiсля коми.
помножити на 100, і цілочислено розділити на 100
Або помножити на 100, взяти ціле, розділити на 100
помножити на 100, і цілочислено розділити на 100
Чи можете записати це за допомогою коду?
Chemist-i написав:помножити на 100, і цілочислено розділити на 100
Чи можете записати це за допомогою коду?
Можу, але ж так ліниво.
nick__ написав:Все одно виводить багатознакове число або 0.
Та невже?
https://ideone.com/eaMxEc
Так з нулями в кінці. А так вивід без нулів:
#include <stdio.h>
int main(void) {
float a = 1.26558;
int c = a * 100;
float b = c / 100.0;
printf("b = %.2f", b);//%.2f обрізає нулі
// your code goes here
return 0;
}
nick__ написав:Все одно виводить багатознакове число або 0.
Та невже?
https://ideone.com/eaMxEc
То якась фігня виходить..
Краще вже так:
#include <stdio.h>
int main() {
float a(3.14159);
printf("%.3f", a);
printf("\n%.2f", a);
printf("\n%.1f", a);
return 0;
}
без використання бiблiотек
#include <stdio.h>
nick__ написав:без використання бiблiотек
Chemist-i , mrofon написав:#include <stdio.h>
якщо без виводу, то хеадер неважливий
Хлопці, перестаньте знущатись
Не ображайтесь, то просто захотілось вставити свої п'ять
ТС завдання якесь дивне вигадав, без бібліотек..
Як на мене то зробив би з бібліотеками ось так:
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
float n(3.14159);
cout << fixed << setprecision(3) << n << endl;
cout << fixed << setprecision(2) << n << endl;
cout << fixed << setprecision(1) << n << endl;
return 0;
}
і не робив би собі свербіж де не потрібно..
Він не вигадав, це "стандартна" задача для студентів. А я сам не знав як, гуглив і знайшов на лівому форумі ось цей код:
float value = 37.777779;
float rounded = ((int)(value * 100 + .5) / 100.0);
Є критика: "це не працює з від'ємними числами". Мені цікаво, це один і той же код чи різні? Чому має не працювати? Що значить "+ .5" і що воно дає?
Що значить "+ .5" і що воно дає?
То таке округлення значення.
Значення помножили на 100 та додали 0.5, потім поділили на 100.
Спробуйте порахувати олівцем в стовпчик:
(37.1234567 * 100 + 0.5) / 100 = 37,1284567
та
(37.1254567 * 100 + 0.5) / 100 = 37,1304567
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися