2014-12-14 2 views
-4

После того, как я положил свой double в оператор if, мой двойник теряет десятичное место. Если я вводим 1.0000001 для первого и 1 для второго. Почему это?Почему моя двойная потеря десятичной точки? C++

#include <iostream> 
using std::cin; 
using std::cout; 
using std::endl; 

int main() 
{ 
    double first = -1; 
    double second = -2; 

    cin >> first >> second; // 1.0000001 >> 1 

    if(first - second > 0) 
     cout << first << endl << second; 
} 
+4

Пожалуйста, пост точный ввод, ожидаемый результат и фактический выход. – zch

+0

Вы должны быть более конкретными. Какой из них «мой двойной», или он оба? Что вы подразумеваете под «теряет десятичное место»? –

+0

Потеряет что? http://ideone.com/JFmxO6 – milleniumbug

ответ

1

Ваш двойник не «потеряет» десятичные знаки. Вы могли бы также спросить, почему ваша инициализация работала, когда вы не указали никаких десятичных знаков в первую очередь.

cout выбирает, сколько десятичных знаков будет показано на основе значения числа. В этом случае нет смысла показывать десятичные знаки, потому что все они будут равны нулю.

Если вы хотите, чтобы показать знаков после запятой, играть с the I/O manipulators:

#include <iostream> 

int main() 
{ 
    double first = -1; 
    double second = -2; 

    std::cin >> first >> second; 
    std::cout << std::fixed; 
    if(first - second > 0) 
     std::cout << first << std::endl << second; 
} 

// -1.000000 
// -2.000000 

(live demo)

+0

Простите, я не прояснил ситуацию. Я имел в виду, когда я вводил число, подобное 1.0000001 для первого и 1 для второго. Когда я пытаюсь отображать первый и второй в моем if-заявлении, почему он отображает только 1 для первого, когда я ввел 1.0000001? – dstone

+0

@ dstone: Я уже говорил вам: поток выбирает точность в соответствии со своим лучшим суждением. Переопределите его с помощью манипуляторов ввода-вывода. Вы читали информацию, к которой я привязал вас? Вы попробовали мое предложение? Между тем эта новая информация абсолютно не похожа на ваш вопрос. Так мы попробуем еще раз? –

+0

Opps, извините, ха-ха. Не заметил, что это была ссылка. Благодарю. Новое в этом. – dstone