Double * double дает int в качестве вывода в cpp
Я умножения двухспальной тогда почему ответ имеет тип int
Что я уже пробовал:
#include<bits/stdc++.h> using namespace std; int main(){ int t; cin>>t; while(t--){ double n=2.00; cout<<n*3.00; } }
#include<bits/stdc++.h> using namespace std; int main(){ int t; cin>>t; while(t--){ double n=2.00; cout<<n*3.00; } }
Небольшой тест
#include <iostream> using namespace std; int main() { double d = 10; int i = 10; cout << boolalpha; cout << ( typeid(d*2) == typeid(double) ) << "\n"; cout << ( typeid(i*2) == typeid(double) ) << "\n"; cout << ((d*2)/3) << "\n"; cout << ((i*2)/3) << "\n"; }
true false 6.66667 6
Нет, это не так! :смеяться:
Просто cout по умолчанию использует "неформатированный двойник", который удаляет конечные нули после десятичной точки.
Если вы измените свой код на этот:
while(t--){ double n=0.2; cout<<n*3.00<<"\n"; }
t
раз.fixed
чтобы "заставить" десятичные знаки:cout<< fixed <<n*3.00<<"\n";Что даст вам "6.000000"
int main() { cout<<"Hello World"; int t; cin>>t; cout.precision(2); while(t--){ double n=2.00; cout<< fixed <<n*3.00<<"\n"; } return 0; }
5.