Форум программистов, компьютерный форум CyberForum.ru

округление - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 38, средняя оценка - 4.79
siemdi
4 / 4 / 0
Регистрация: 18.01.2010
Сообщений: 29
19.09.2010, 16:36     округление #1
суть проблемы такова, Ro=sqrt(SumR/(1/SumR)) вот этот кусок прраммы почему округляет ответ до целых, хотя Ro типа double, помогите, в чем проблемма?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
for(i=0;i<KolRez;i++)
    {
        do
        {
            cout<<"    номинальное сопротивление "<<i+1<<" резистора"<<endl;
            cout<<"    (25<=R[i]<=500000)"<<endl;
            cin>>R[i];
        }
        while((R[i]>500000)||(R[i]<25));
        SumR+=R[i];
    }
    for(i=0;i<KolRez;i++)
    {
    cout<<"R["<<i+1<<"]="<<R[i]<<endl;
    }
    cout<<"SumR="<<SumR<<endl;
    Ro=sqrt(SumR/(1/SumR));
    cout<<"Ro="<<Ro<<endl;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.09.2010, 16:36     округление
Посмотрите здесь:

Округление C++
Округление до сотых. C++
C++ Округление числа
Округление до целых C++
C++ Округление дробных
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
19.09.2010, 16:40     округление #2
siemdi, SumR тоже неплохо бы сделать double или float. Ну или 1.0 написать вместо 1.
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
19.09.2010, 16:41     округление #3
C++
1
Ro=(float)sqrt(SumR/((float)1/SumR));
D@rkD@iver
110 / 110 / 3
Регистрация: 01.10.2008
Сообщений: 876
19.09.2010, 16:41     округление #4
siemdi, проблема в том что r/(1/r)= r^2
а sqrt(r^2)= r
и если r целое то и Ro целое
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
19.09.2010, 16:43     округление #5
Ro=sqrt(1.0*SumR/(1/SumR))
siemdi
4 / 4 / 0
Регистрация: 18.01.2010
Сообщений: 29
19.09.2010, 16:46  [ТС]     округление #6
Цитата Сообщение от Lavroff Посмотреть сообщение
siemdi, SumR тоже неплохо бы сделать double или float. Ну или 1.0 написать вместо 1.
SumR тоже double
Цитата Сообщение от D@rkD@iver Посмотреть сообщение
siemdi, проблема в том что r/(1/r)= r^2
а sqrt(r^2)= r
и если r целое то и Ro целое
я это тоже поинмаю, но подставляя четыре значения (40 421 560 1001) и подсчитывая вручную, получается как раз то что должно быть 2021,9179 а в формуле в программе получается целое 2022 что такое не понятно, да и вообще суть этой формулы я не понимаю
Yandex
Объявления
19.09.2010, 16:46     округление
Ответ Создать тему
Опции темы

Текущее время: 23:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru