1. 程式人生 > >C++保留小數精度

C++保留小數精度

在C++的程式設計中,總會遇到浮點數的處理,有的時候,我們只需要保留2位小數作為輸出的結果,這時候,問題來了,怎樣才能讓cout輸出指定的小數點後保留位數呢?

在C語言的程式設計中,我們可以這樣實現它:

printf("%.2f", sample);

在C++中,是沒有格式符的,我們可以通過使用setprecision()函式來實現這個需求。

想要使用setprecision()函式,必須包含標頭檔案#include <iomanip>。使用方式如下:

cout << "a=" << setprecision(2) << a <<endl;
這時候,我們會發現,如果a的值為0.20001,輸出的結果為a=0.2,後面第二位的0被省略了。

如果我們想要讓它自動補0,需要在cout之前進行補0的定義。程式碼如下:

cout.setf(ios::fixed);
cout << "a=" <<fixed<< setprecision(2) << a <<endl; //輸出a=0.20
這樣,我們就可以得到0.20了。當然,如果想要關閉掉補0,只需要對fixed進行取消設定操作。
cout.unsetf(ios::fixed);
cout << "a=" << setprecision(2) << a <<endl; //輸出a=0.2

我們的輸出結果就又變回a=0.2了。

參考程式碼:

#include <iostream>

#include <iomanip>

using namespace std;

int main()

{

    float a = 0.20001;

    cout.setf(ios::fixed);

    cout << "a=" <<fixed<< setprecision(2) << a <<endl; //輸出結果為a=0.20

    cout.unsetf(ios::fixed);

    cout << "a=" << setprecision(2) << a <<endl; //輸出結果為a=0.2

    return 0;

}
轉自點選開啟連結

相關推薦

C++保留小數精度

在C++的程式設計中,總會遇到浮點數的處理,有的時候,我們只需要保留2位小數作為輸出的結果,這時候,問題來了,怎樣才能讓cout輸出指定的小數點後保留位數呢?在C語言的程式設計中,我們可以這樣實現它:printf("%.2f", sample);在C++中,是沒有格式符的,我

C / C++中保留小數精度

#include <iostream> #include <math.h> using namespace std; int main() { double a =

C# 保留小數位數的方法

小數 mat text double 必須 前言 ont ext digits ? 前言 本文主要介紹 C# 中實現小數位數的保留,完成對小數位數四舍五入的幾種方法。 1. 使用 Math.Round() 方法 說明: 1) 其實使用 Math.Round()

C++保留小數位數問題

首先 介紹主角: setprecision()     和    setiosflags()  這兩個函式是標頭檔案#include<iomanip>裡的函式,記得加標頭檔案#include<iomanip> setprecision() 顧

C#保留小數

四捨五入保留 float a=0.188f; double b=System.Math.Round(a,2);//output: 0.19 直接擷取: float f=0.188f; int i=(int)(f*100); f=(float)(i)/100; 此方法在Unity下發現無法以下形式出現錯

C++ double 小數精度控制

第一種方法:cout<<fixed<<setprecision(20)<<mydouble<<endl; #include <iostream> #include <iomanip> using nam

如何保留小數精度

1.java中有自帶的方法Math類中round,可以自己檢視API。 API中是這麼介紹的:round(double a) 返回引數中最接近的 long ,其中 long四捨五入為正無窮大。 Eg: double a=10;

C# 保留兩位小數

pre float bsp color system output nbsp col double 四舍五入保留 float a=0.188f; double b=System.Math.Round(a,2);//output: 0.19 直接截取: float f=

C++ 保留有效小數 保留有效數字

std inf 輸出格式 cout iomanip include image pac end 1.需要頭文件 #include <iomanip> 2. 要保留兩位有效小數 cout<<setiosflags(ios::fixed)<

c/c++ 整數除預算保留小數

兩個整數相除會自動省略小數點後的小數位即使下面這種: int a,int b; int a = 4; int b = 3; double d = a/b;  d= 1.0000000; --------------------------- 整數除法用 “/”的話得到的是一個整數(得到

c# 保留幾位小數

1.佔位符方式 (改方法只能在輸出時顯示保留兩位小數的效果) double number = 3.3333333333; Console.WriteLine("{0:0.00}",number);   2.轉字串方式 double number = 3.33333333

【高精度演算法】A/B 高精度除以低精度 保留小數

#include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> cha

c語言除法如何保留小數,如何printf小數 [程式設計題] 字串碎片

#include<stdio.h> #include<string.h> char str[51]; int n,count,i; int main() {     scanf("%s",&str);     n=strlen(str);  

C++解決資料精度問題,對浮點數儲存指定位小數

------ 更新日期  2018年5月13日 21:41:46 1、背景        對浮點數儲存指定位小數。比如,  1.123456.   要儲存1位小數,,呼叫方法後, 儲存的結果為: 1.1。 再比如,1.98765,  儲存2位小數的結果

(轉)C++中保留小數位數的方法

iomanip的作用: 主要是對cin,cout之類的一些操縱運運算元,比如setfill,setw,setbase,setprecision等等。它是I/O流控制標頭檔案,就像C裡面的格式化輸出一樣.以下是一些常見的控制函式的: dec 置基數為10 相當於"%d" hex 置基數為16 相當於"%X"

C語言——高精度小數

演算法題目已給出了。。 題目內容: 由於計算機內部表達方式的限制,浮點運算都有精度問題,為了得到高精度的計算結果,就需要自己設計實現方法。 (0,1)之間的任何浮點數都可以表達為兩個正整數的商,為了表達這樣兩個數的商,可以將相除的結果以多個整數來表示,每個整數表示結果的一位

C# 保留2位小數

str 保留 tr1 報錯 parse orm val 四舍五入 decimal 1.只要求保留N位不四舍5入 float f = 0.55555f; int i =(int)(f * 100); f = (float)(i*1.0)/1

c++實現高精度加法

strlen 數位 cout col 代碼 code pre 操作數 eof c++實習高精度加法 最近遇到一個c++實現高精度加法的問題,高精度問題往往十復雜但發現其中的規律後發現並沒有那麽復雜,這裏我實現了一個整數的高精度加法,主要需要註意以下幾點: 1:將所需

python 浮點數保留小數

方式 decimal round logs gen 輸出 浮點數 .cn 保留 http://www.cnblogs.com/Raymon-Geng/p/5784290.html 這裏有三種方法, round(a,2) ‘%.2f‘ % a Decimal(‘5.000‘)

入門cout輸出的格式(補位和小數精度)

http sdn art bsp family mar tail log details http://blog.csdn.net/gentle_guan/article/details/52071415 mark一下,媽媽再也不用擔心我高精度不會補位了入門cout輸出