c#十进制问题

时间:2015-03-25 19:44:08

标签: c# decimal

代码优先。

taxRateDecimal = 0.0765;
if (taxRateDecimal.ToString().Split('.').Length == 2)
{
    outPut =  taxRateDecimal.ToString().Split('.')[1].Substring(0, 4);
    ReportParameters.Add("TaxRateAsDecimal", "." + outPut); 
}

正如你在子字符串中看到的那样,我必须硬编码4的长度。 期望的结果.0765作为一个字符串。

以下是我经历过的一些情景。

我有7.65的百分比。 我想把它转换成十进制,这样做我做7.65 / 100。 这给了我0.0765,但我想要.0765。 如果我拿0.0765并在“。”上使用拆分。并使用长度等.. 我实际上得到数组[1]的长度为6,值为076500。 我只想要.0765或者只是0765,我可以添加点。

我还没试过其他任何想法? 这最终需要成为一个字符串,因为我将它作为一个prama传入SSRS。

2 个答案:

答案 0 :(得分:2)

您应该能够使用格式来创建字符串:

var taxRateDecimal = 0.0765D;
var reportParameter = taxRateDecimal.ToString(".0000", CultureInfo.InvariantCulture);

结果reportParameter.0765

该格式的其他结果是:

0D       ->  .0000
1D       -> 1.0000
1.23456D -> 1.2346

您必须使用CultureInfo.InvariantCulture来确保小数点分隔符是一个点。否则,当前区域性(默认值)可能会将逗号指定为小数点分隔符。

答案 1 :(得分:1)

string.Format可以轻松处理此问题。

double taxRateDecimal = 1.0765;
string formattedResult = string.Format("{0:.0000}", taxRateDecimal % 1);

Console.WriteLine(formattedResult);  // .0765