我有这段代码:
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
将十进制数与","分开。我需要用"。"我有什么方法可以做到吗?
答案 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