更改小数格式

时间:2017-07-28 09:08:11

标签: c#

我有这段代码:

using (StreamWriter writer = new StreamWriter("C:\\Users\\HP8200\\Desktop\\teste.txt"))
{            
    string numcont = _transaction.PartyFederalTaxID;
    double numenc = _transaction.BillToPartyID;
    double numfatura = _transaction.TransDocNumber;
    DateTime data = _transaction.CreateDate;
    double valor = _transaction.TotalAmount;
    short zona = transaction.Zone.ZoneID;
    //ean mal
    string ean = transaction.ATDocCodeId;
    double iva = 23;
    //preçoantesdisc mal
    double precoantesdisc = _transaction.TotalPaymentDiscountAmount;
    double preconet = transaction.Details.TotalAdvancementNetAmount;
    double quantidade = transaction.Details.Count;
    double bonus = _transaction.TotalPaymentDiscountAmount;            

    writer.WriteLine($"{numcont};{numenc};{numfatura};{data.ToString("dd/MM/yyyy")};{valor};{zona}{Environment.NewLine}{ean}{iva};{precoantesdisc};{preconet};{quantidade};{bonus}");
}
MessageBox.Show("saved");

变量valor将十进制数与","分开。我需要用"。"我有什么方法可以做到吗?

3 个答案:

答案 0 :(得分:5)

变量valor的类型为double,它不使用小数点分隔符,仅 格式化的字符串。插值字符串会对其进行转换,默认情况下它会使用您当前的文化。您可以使用:

string valorStr = valor.ToString(CultureInfo.InvariantCulture);
string line = $"{numcont};{numenc};{numfatura};{data.ToString("dd/MM/yyyy")};{valorStr};{zona}{Environment.NewLine}{ean}{iva};{precoantesdisc};{preconet};{quantidade};{bonus}";
writer.WriteLine(line);

答案 1 :(得分:0)

您需要根据您的语言环境指定正确的文化并使用ToString方法:

var culture = new CultureInfo("es-ES");

writer.WriteLine($"{numcont};{numenc};{numfatura};{data.ToString("dd/MM/yyyy")};{valor.ToString(culture)};{zona}{Environment.NewLine}{ean}{iva};{precoantesdisc};{preconet};{quantidade};{bonus}");

将“es-ES”替换为正确的文化标识符(es-ES使用逗号,但最好使用自己的,我想它是pt-BR)。

答案 2 :(得分:0)

为了能够这样做,你必须这样做:

train

这会将System.Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator = "."; NumberDecimalSeparator设置为CurrentCulture

然后只需使用"."方法:

ToString

此方法的缺点是您将覆盖valor.toString("N", System.Globalization.CultureInfo.CurrentCulture.NumberFormat); 的默认NumberDecimalSerpator。因此,如果你关心它,你可以创建一个新的CurrentCulture

NumberFormatInfo

然后在var nfiOrg = System.Globalization.CultureInfo.CurrentCulture.NumberFormat; var nfiNew = new System.Globalization.NumberFormatInfo(); nfiNew.NumberDecimalSeparator = "." nfiNew.NativeDigits = nfiOrg.NativeDigits; // set all of the other fields of nfiNew 调用中使用它:

ToString