c如何將float型別數值保留兩位小數

時間 2021-09-10 17:36:05

1樓:我叫啥

程式例程如下:

double x = 6.50000000000;

float y = float.parse(x.tostring());

console.writeline(y.tostring("f2"));

以上程式將x值賦給y,y保留兩位小數。

2樓:果建翼

你要知道,float是浮點數,無法精確表示一個數值。所以你根本不可能在float內部精確表示一些小數,比如0.7或者你說的0.32。

有興趣的話可以研究下ieee754標準,這個標準規定了電腦中浮點數如何儲存,看完了你就會明白,這些小數在電腦中儲存的時候都是轉換成二進位制儲存的,而0.32和0.7這種小數,在十進位制下是有限小數,但轉換成二進位制之後就是無限迴圈小數了,所以是無法精確用float表示的。

你只能在float內部儲存一個很接近的近似值。

在**中也不應該寫:if (a == 0.7) 這種語句,因為浮點數a是無法精確表示0.7的,應該寫成:

if (math.abs(a - 0.7) < ***) 其中***是一個足夠小的數。

當然你在輸出的時候是可以將這個float a輸出成兩位小數的,比如a.tostring("f2");這樣輸出的時候會將a的值十進位制小數點後2位之後進行四捨五入然後輸出,但是a本身的值仍然是無法保證精確只有兩位小數的。

-------------

補充:我知道你是要從string轉float,不過原因我已經說了,這是float內部儲存方式的問題,不是轉換的問題,浮點數本來就無法精確儲存一些小數,這個是沒辦法的。這也就是為什麼許多涉及到金融業務的程式都採用的是定點數來儲存金額等數字,而不是採用浮點數的原因。

3樓:

不知道你怎麼轉的。我輸入0.32轉後還是0.32,難道說vs版本不同,結果也不同?

c#如何將float型別數值保留兩位小數?

4樓:哼哈嗯嗯

1、float y =8.60000000000000000;

string s = y.tostring("f2");

2、%.2f是保留兩位小數

%.3f是保留三位小數

3、c#裡面有個math.round()函式,math.round(a,2)就是保留2位小數

在c#中怎麼控制float的值保留小數的位數

5樓:

1)保持原來的float型別值不變,顯示或輸出時指定小數點位數float x = 62.11512322f;

//用 "f2" 指定小數點後2位

string s =  string s =string.format("", x);

//結果 s = "62.12"

float x = 62.11512322f;

//將 x 後小數點位數指定為2(四捨五入)float x = (float)math.round((double)x, 2)

// 結果: x = 62.12

6樓:love陶媛

%.2f是保留兩位小數

%.3f是保留三位小數

7樓:

num.tostring("0.00");

or convert.todecimal(num).tostring("f2");

c#中 如何把float 的值保留為小數點後2位

8樓:匿名使用者

值始終是

那麼多,關鍵就是個字串顯示的問題,假如說有個float num,那麼num.tostring("0.00");就可以了。回

如果你想再轉化為一個答數字,那麼float.parse(num.tostring("0.00"))

9樓:匿名使用者

private string keepdot2(double num)

在c#中怎麼控制float的值保留小數的位數

10樓:馮晨蓓不默

出現"非數字"可能是因為除數為0,lz可以加個驗證比如f1/f2

if(f2

==0)

要保留兩位小數的話,只需f=

f1/f2;

f.tostring("f2");

即可f2表示保留兩位小數

望採納~

11樓:山和煦答南

1)保持原來的float型別值不變,顯示或輸出時指定小數點位數float x = 62.11512322f;

//用 "f2" 指定小數點後2位

string s = string s =string.format("", x);

//結果 s = "62.12"float x = 62.11512322f;

//將 x 後小數點位數指定為2(四捨五入)float x = (float)math.round((double)x, 2)

// 結果: x = 62.12

如何將float以保留兩位小數,C 如何將float型別數值保留兩位小數?

文件類共創空間 你要知道,float是浮點數,無法精確表示一個數值。所以你根本不可能在float內部精確表示一些小數,比如0.7或者你說的0.32。有興趣的話可以研究下ieee754標準,這個標準規定了電腦中浮點數如何儲存,看完了你就會明白,這些小數在電腦中儲存的時候都是轉換成二進位制儲存的,而0....

C如何將型別作為引數傳遞,C 怎麼將類作為引數傳遞

鄭振英衣念 直接作為object傳過去,然後再根據需要檢測型別 public void show object o else if o istextbox 你那種思路傳的引數只能是string 然後用反射機制實行 要不然以你的 傳的是一個型別 他的型別物件是空的 assibly as assibly...

C中如何將double型別轉換成string型別

隱式轉換 當對簡單的值型別進行轉換時,如果是按照 byte,short,int,long,float,double從左到右 從短到長 進行轉換的時候,可以直接進行轉換 隱式轉換 不用做任何說明。簡單的 示例 static void main string args 顯示轉換 依然是對值型別進行轉換時...