2012-03-18 38 views
-2

示例 - > 4.11 我需要得到11,這是十進制後的值如何獲得小數點後的值?

如何在C#中獲得?

+1

什麼數據類型是輸入?一般規則是什麼?例如,如果輸入是4.011呢? – 2012-03-18 12:57:17

+0

你爲什麼要這樣?如果要求被理解,可能會有更好的方法。 – 2012-03-18 13:18:50

回答

0

從價值的math.int減去值

0

如果你的意思是讓小數點後面的數字(如果存在)作爲原始字符串,只需使用字符串操作:

double myNumber = 4.0001115; 
string myString = myNumber.ToString(); 
string decimalSeparator = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator; 
int index = myString.IndexOf(decimalSeparator); 
string afterDecimal = (index >= 0 && !myString.EndsWith(decimalSeparator)) ? myString.Substring(index + decimalSeparator.Length) : ""; 

否則,如果你的意思是把它作爲自己的權利號碼,這裏的其他答案是正確的。

+0

這對我不起作用,因爲我的['CurrentCulture'' NumberDecimalSeparator'](http://stackoverflow.com/a/9758585/284240)是'',''和'myNumber.ToString()'會是'4,0001115'。 – 2012-03-18 13:47:18

+0

@Tim好點,編輯我的帖子以支持不同的格式。 :) – 2012-03-18 14:21:39

0

這是舊的,但爲什麼不把這個值放在一個整數,所以它縮短到一個沒有小數的數字。

而且比這樣的INT數減去價值 - >

double myValue = 4.11; 
int myInteger = myValue // It's 4 
double valueAfterDecimal = myValue - myInteger; // It's 4.11 - 4 = 0.11 
int valueAsInt = Convert.ToInt16(valueAfterDecimal * 100) ; 
// 0.11 *100 = 11.0 --> Convert to Int = 11 
+0

但結果應該是11. – Gustav 2017-10-13 15:41:59

+0

我沒有注意到這一點。但你可以簡單地取0.11 * 100並將其寫入一個int值,以便在十進制後削減所有其他值。 – 2017-10-17 15:06:34

+0

是的,但你錯過了細微的細節,結果應該是11,而不是0.11。 – Gustav 2017-10-17 15:47:14

0

使用這種簡單的方法,確實保留尾數的前導零:

double number = -1234.056789; 
string mantissa = string.Empty; 
decimal fraction = (decimal)number % 1; 
if (fraction != 0) 
{ 
    mantissa = Math.Abs(fraction).ToString().Substring(2); 
} 
Console.WriteLine(mantissa); 
Console.ReadKey(); 

Result: 056789 
相關問題