Преобразование из двойного в целое число [дубликаты]

0

Я застрял в проблеме, когда двойной номер не получает правильное преобразование в целое.

В этом case->

int x=1000;

double cuberoot=pow(x,(1/(double)3));

int a=cuberoot;

cout<<"cuberoot="<<cuberoot<<endl;

cout<<"a="<<a<<endl;

Вывод:

cuberoot=10
a=9

Почему здесь а = 9, а не 10?

Любое решение этой проблемы?

Также я не хочу округлять значение. Если a = 3.67, тогда он должен быть преобразован только в 3, а не в 4.

  • 0
    Вы можете добавить небольшой позитив к числу, а затем рассчитать корень. Как x=1000+0.05 . Это дало a=10 .
  • 1
    Это не cube - Это было бы х ^ 3
Теги:
decimal
integer
pow

2 ответа

1

Поскольку cuberoot очень близок к 10, но не совсем 10. std::cout обрезает и округляет число до 10, но преобразование с двойным целым будет разделять десятичное число, поэтому a = 9. Чтобы решить эту проблему, вы можете использовать std::round():

int a=round(cuberoot);
  • 0
    Таким образом, какое-либо решение этого, так что а = 10 здесь?
  • 0
    используйте функцию round ().
Показать ещё 5 комментариев
0

Попробуйте это и посмотрите, почему!

#include <iostream>
#include <iomanip>
#include <cmath>

using namespace std;

int main(){
    int x = 1000;
    double cube = pow(x, 1.0/3.0);
    int a = cube;
    cout<<"cube="<< fixed << setprecision(16) << cube<<endl;
    cout<<"a="<<a<<endl;
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню