2016-07-01 9 views
2

私は別のプリント(ウィンドウに余分な0)を表示するプログラムを持っており、それをlinuxと同じにしようとしています。 Visual studio 2012を使用しているウィンドウで。 g ++ v4.8.3を使用しているLinuxの場合余分な0はウィンドウ上の浮動小数点で印刷

任意の文字列。私が直面していますこの問題を披露する小さなプログラムを作成している

... Linux上で

#include "stdafx.h" 

#include <stdio.h> 

int main() 
{ 

float f = -1e-14; 
printf("\n\n \t Lets print the float value -1e-14 as [%9.3g] \n\n\n\n",f); 

return 0; 
} 

:-1e中(予告余分0:

Windows上
/home/mag>./a.out 


     Lets print the float value -1e-14 as [ -1e-14] 

-014)

  Lets print the float value -1e-14 as [ -1e-014] 

なぜ私は同じことをしようとしている理由は、WindowsとLinuxからの出力をデバッグしていることと、WindowsとLinuxの出力の差が巨大なためです。

+0

どちらの場合もGCCでビルドしていますか? –

+0

Visual studio 2012を使用しているウィンドウで。 g ++ v4.8.3を使用しているLinuxの場合 – MAG

答えて

3

最初にprintf()にVS2012で2桁の指数を使用するように_set_output_format(_TWO_DIGIT_EXPONENT)を呼び出します。

+0

これはVisual Studio 2015では使用できなくなりました。 – 1201ProgramAlarm

+0

@ 1201ProgramAlarmそのバージョンで不一致が解決されましたか? –

+0

@ AlexanderO'Mara _set_output_format、2015バージョンのドキュメントから、これを取り除いたように見え、指数は常に3桁になります。 – 1201ProgramAlarm

関連する問題