1

Тема: Маю задачу

Я повинен за допомогою лише лiнiйних операторiв(без використання бiблiотек) "обрiзати" float до двох знакiв пiсля коми.

2

Re: Маю задачу

помножити на 100, і цілочислено розділити на 100
Або помножити на 100, взяти ціле, розділити на 100

3

Re: Маю задачу

Chemist-i написав:

помножити на 100, і цілочислено розділити на 100

Чи можете записати це за допомогою коду?

4

Re: Маю задачу

nick__ написав:
Chemist-i написав:

помножити на 100, і цілочислено розділити на 100

Чи можете записати це за допомогою коду?

Можу, але ж так ліниво.

Подякували: koala1

5

Re: Маю задачу

Все одно виводить багатознакове число або 0.

6

Re: Маю задачу

nick__ написав:

Все одно виводить багатознакове число або 0.

Та невже?
https://ideone.com/eaMxEc

Подякували: nick__1

7

Re: Маю задачу

Адже гарний байт видався, дякую за вiдповiдь)

8

Re: Маю задачу

Chemist-i написав:
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;
}
Подякували: Chemist-i, nick__2

9

Re: Маю задачу

Chemist-i написав:
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;
}

10

Re: Маю задачу

nick__ написав:

без використання бiблiотек

Chemist-i , mrofon написав:
#include <stdio.h>

*SCRATCH*

11

Re: Маю задачу

Хлопці, перестаньте знущатись :) leofun01 і Droid 77, пан ТС навіть мову не вказав, я йому відповідь дав не кодом спочатку не просто так...

Подякували: mrofon, leofun012

12

Re: Маю задачу

leofun01 написав:
nick__ написав:

без використання бiблiотек

Chemist-i , mrofon написав:
#include <stdio.h>

*SCRATCH*

якщо без виводу, то хеадер неважливий

13

Re: Маю задачу

Chemist-i написав:

Хлопці, перестаньте знущатись

Не ображайтесь, то просто захотілось вставити свої п'ять :)
ТС завдання якесь дивне вигадав, без бібліотек..
Як на мене то зробив би з бібліотеками ось так:

#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;
}

і не робив би собі свербіж де не потрібно.. :)

14

Re: Маю задачу

Він не вигадав, це "стандартна" задача для студентів. А я сам не знав як, гуглив і знайшов на лівому форумі ось цей код:

float value = 37.777779;
float rounded = ((int)(value * 100 + .5) / 100.0);

Є критика: "це не працює з від'ємними числами". Мені цікаво, це один і той же код чи різні? Чому має не працювати? Що значить "+ .5" і що воно дає?

15

Re: Маю задачу

mrofon написав:

Що значить "+ .5" і що воно дає?

То таке округлення значення.
Значення помножили на 100 та додали 0.5, потім поділили на 100.
Спробуйте порахувати олівцем в стовпчик:
(37.1234567 * 100 + 0.5) / 100 = 37,1284567
та
(37.1254567 * 100 + 0.5) / 100 = 37,1304567

Подякували: 0xDADA11C71