2016-05-23 34 views
1

我有一些双重价值,例如:的String.Format翻一番,没有分离

24.1 
0.5 
9.0 

我想,让我得到了前点和后点三位数的数字格式化这些值。这个数字不应该由一个点 分开所以它最终会是这样的:

24100 
0500 
9000 

我目前的解决方案,我不喜欢看起来像这样:

public override String ToString() 
{ 
    String formatparameter = "{0:0.000}"; 
    String stringFix = String.Format(formatparameter, m_Fix); 
    stringFix = stringFix.Replace(".", ""); 
    stringFix =stringFix.Replace(",", ""); 
    return stringFix 
} 

是否有一个的String.Format“ formatParameter“,这使得字符串。更换冗余/过时?

编辑:

为了澄清我正在寻找一个格式参数。迄今为止提供的解决方案在输出方面都很出色,但我希望找到一个参数。

+4

你就不能乘以1000呢? –

+0

0.5 * 1000 = 500 – Bongo

+1

和500与0500具有相同的值(数字)。这只是一个格式化问题 - 参见[this fiddle](https://dotnetfiddle.net/TkzSmj)或其中一个相似的答案。 –

回答

3

你可以使用

return string.Format("{0}{1:000}", (int)m_Fix, (m_Fix*1000)%1000); 

或C#6

return $"{(int)m_Fix}{(m_Fix*1000)%1000:000}" 

测试你的三个值,并得到这样的输出:

24100 
0500 
9000 
+0

感谢您的回答,是的,如果你看看输出是正确的,但我正在寻找一个“formatParameter”。 – Bongo

+1

@Bongo我不认为有一个格式参数可以省略小数点。 –

+0

我会在几个小时内解决这个问题。如果你是对的,我会检查这是正确的答案,因为它是最正确的答案,它是第一个 – Bongo

4

更新
这里就是我'd do:

public static String ToString(double d) 
{ 
    return (d * 1000.0).ToString("0000"); 
} 

Console.WriteLine(ToString(24.1)); 
Console.WriteLine(ToString(0.5)); 
Console.WriteLine(ToString(9.0)); 

输出:

24100 
0500 
9000 
+3

4'0'就足够了,你不需要5([fiddle](https:// dotnetfiddle)。 net/ZaLdny)) – Sayse

+0

@Sayse,已更新 –

+1

你的第一个答案是正确的,它只有一个到零的格式,比你更新的更清晰。 – Sayse