2016-12-06 4 views
-5

私は初心者です。私はコンピュータ科学のためにいくつかの助けをしたいと思います。なぜなら、それは悲惨なことに失敗しています。私はここでsetprecisionが動作しない理由を理解していません。私はこのコードが完全ではないことを理解していますが、私には意味がありません。小数点は使用できませんか? (C++)

#include <iostream> 
#include <iomanip> 

using namespace std; 

int main() 
{ 
    int sug = 1.5; 
    int but = 1; 
    int flo = 2.75; 
    int tel = 48; 
    double ans; 

    cout << "How much cookies would you like to make? "; 
    cin >> ans; 
    cout << setprecision(2) << fixed << showpoint << "For " << tel << " amount of cookies, you need " << flo << endl; 

    return 0; 
} 
+3

数字を10進数で指定するときに 'int'の代わりに' float'を使用してください –

+1

あなたのコード[動作しません](http://importblogkit.com/2015/07/doe s-not-work /)? –

+0

'2.75'は整数と見なされるので、' 2'と評価されます。または '3'。実際にはとにかく論理的な意味を持たないからです。 –

答えて

3

宣言

int flo = 2.75; 

&hellip。 をタイプintの変数として宣言します。初期値は、2.75であり、等しいまたはより小さい大きさの最も近い整数値に切り捨てられている、すなわち平文2である。 より多くの警告をコンパイラに依頼する場合おそらくこれについて警告するでしょう。

とにかく、setprecisionは整数の出力に影響しません。

しかし、出力式を浮動小数点型に非常に簡単に変更できます。 double

cout << "You need " << 0.0 + flo << endl; 

それともdoubleを入力しfloの宣言を変更することができます。 G ++およびVisual C++コンパイラで

int flo{ 2.75 }; //! Just won't compile. 


コンパイラは初期化子からの情報を破棄コードを受け付けないようにする簡単な方法は、中括弧の初期化を使用することです

 
[C:\my\forums\test] 
> g++ foo.cpp 
foo.cpp: In function 'int main()': 
foo.cpp:3:19: error: narrowing conversion of '2.75e+0' from 'double' to 'int' inside { } 
    int flo{ 2.75 }; 
       ^
foo.cpp:3:9: warning: unused variable 'flo' [-Wunused-variable] 
    int flo{ 2.75 }; 
     ^

[C:\my\forums\test] 
> cl foo.cpp 
foo.cpp 
foo.cpp(3): error C2397: conversion from 'double' to 'int' requires a narrowing conversion 
foo.cpp(3): warning C4244: 'initializing': conversion from 'double' to 'int', possible loss of data 

[C:\my\forums\test] 
> _ 
関連する問題