当前位置:编程学习 > C#/ASP.NET >>

怪事123.tostring("c") 转换后显示为$123,100分求教!!!

怪事123.tostring("c") 转换后显示为$123,请问怎么回事. --------------------编程问答-------------------- 你采用了格式转换,c默认代表把123转换成了美元符号显示。。 --------------------编程问答-------------------- 这不是对着的嘛? --------------------编程问答--------------------

格式字符串 资料 结果  
"{0:C}" 12345.6789 $12,345.68  
"{0:C}" -12345.6789 ($12,345.68)  
"{0:D}" 12345 12345  
"{0:D8}" 12345 00012345  
"{0:E}" 12345.6789 1234568E+004  
"{0:E10}" 12345.6789 1.2345678900E+004  
"{0:F}" 12345.6789 12345.68  
"{0:F0}" 12345.6789 12346  
"{0:G}" 12345.6789 12345.6789  
"{0:G7}" 123456789 1.234568E8  
"{0:N}" 12345.6789 12,345.68  
"{0:N4}" 123456789 123,456,789.0000  

这种转换有何奇怪?
问题是你想转换成什么格式? --------------------编程问答-------------------- 没什么奇怪。。你的C表示的一个 "格式的关键字 "   就像   DateTinm.Now.toString("yyyy-MM-dd");
显示的是 XXXX年XX月XX日一样 --------------------编程问答-------------------- 错了是
DateTime.Now.toString("yyyy-MM-dd");
--------------------编程问答-------------------- http://blog.csdn.net/q107770540/archive/2010/11/05/5989923.aspx --------------------编程问答-------------------- "{0:C}" 123 $123
结果是这样子的啊。呵呵。你想出来什么样子啊。如果想出123,就把c去掉。 --------------------编程问答--------------------
引用 3 楼 q107770540 的回复:
C# code

格式字符串 资料 结果  
"{0:C}" 12345.6789 $12,345.68  
"{0:C}" -12345.6789 ($12,345.68)  
"{0:D}" 12345 12345  
"{0:D8}" 12345 00012345  
"{0:E}" 12345.6789 1234568E+004  
"{0:E10}" 12345.6789……

支持! --------------------编程问答--------------------
引用 3 楼 q107770540 的回复:
C# code

格式字符串 资料 结果  
"{0:C}" 12345.6789 $12,345.68  
"{0:C}" -12345.6789 ($12,345.68)  
"{0:D}" 12345 12345  
"{0:D8}" 12345 00012345  
"{0:E}" 12345.6789 1234568E+004  
"{0:E10}" 12345.6789 1.234……

人家已经给出了的格式的样式了 --------------------编程问答--------------------
引用 3 楼 q107770540 的回复:
C# code

格式字符串 资料 结果  
"{0:C}" 12345.6789 $12,345.68  
"{0:C}" -12345.6789 ($12,345.68)  
"{0:D}" 12345 12345  
"{0:D8}" 12345 00012345  
"{0:E}" 12345.6789 1234568E+004  
"{0:E10}" 12345.6789……

+1 --------------------编程问答-------------------- 这个和当前操作系统有关系,但也可以设置的



        //结果: ¥123.00 
        Response.Write(123.ToString("c"));

        //结果:¥123.00 
        Response.Write(123.ToString("c", new System.Globalization.CultureInfo("zh-CN")));

        //结果:$123.00
        Response.Write(123.ToString("c", new System.Globalization.CultureInfo("en-US"))); 
--------------------编程问答-------------------- 我想要转换为¥123 因为装机是时区选择的是美国,现在时区更改回来了,还是显示为$123 --------------------编程问答-------------------- LZ想问的应该是为什么显示美元符号,而不是显示人民币符号。。 --------------------编程问答-------------------- C 是标准数字格式字符串,currency 的意思,货币格式,格式化的结果和线程的语言文化有关,中文是¥123,美国英语就是 $123,还可以指定精度,C2,结果就是 $123.00

--------------------编程问答--------------------
引用 9 楼 wulg10 的回复:
引用 3 楼 q107770540 的回复:

C# code

格式字符串 资料 结果
"{0:C}" 12345.6789 $12,345.68
"{0:C}" -12345.6789 ($12,345.68)
"{0:D}" 12345 12345
"{0:D8}" 12345 00012345
"{0:E}" 12345.6789 1234568E+004
"{0:E1……


就是这些。。 --------------------编程问答--------------------
引用 12 楼 ybtangtang 的回复:
我想要转换为¥123 因为装机是时区选择的是美国,现在时区更改回来了,还是显示为$123


对就是这个意思.我要人民币的符号,但是显示出来是美元符号. --------------------编程问答-------------------- String.format(“Y{0}”,123); --------------------编程问答--------------------
引用 2 楼 adsdassadfasdfasdf 的回复:
这不是对着的嘛?


正解 --------------------编程问答-------------------- 格式化货币(跟系统的环境有关,中文系统默认格式化人民币,英文系统格式化美元)
string.Format("{0:C}",0.2) 结果为:¥0.20 (英文操作系统结果:$0.20)
默认格式化小数点后面保留两位小数,如果需要保留一位或者更多,可以指定位数
string.Format("{0:C1}",23.15) 结果为:¥23.2 (截取会自动四舍五入)
区域就用System.Globalization.CultureInfo("zh-CN") --------------------编程问答-------------------- 123.tostring("c") 会转换为本地化货币格式,跟服务器的区域与语言设置有关
可以在控制面板中区域语言设置中更改 --------------------编程问答--------------------

格式字符串 资料 结果  
"{0:C}" 12345.6789 $12,345.68  
"{0:C}" -12345.6789 ($12,345.68)  
"{0:D}" 12345 12345  
"{0:D8}" 12345 00012345  
"{0:E}" 12345.6789 1234568E+004  
"{0:E10}" 12345.6789 1.2345678900E+004  
"{0:F}" 12345.6789 12345.68  
"{0:F0}" 12345.6789 12346  
"{0:G}" 12345.6789 12345.6789  
"{0:G7}" 123456789 1.234568E8  
"{0:N}" 12345.6789 12,345.68  
"{0:N4}" 123456789 123,456,789.0000  



你输出的是对的啊!看你要结果是什么样的? --------------------编程问答-------------------- --------------------编程问答--------------------
引用 3 楼 q107770540 的回复:
C# code

格式字符串 资料 结果  
"{0:C}" 12345.6789 $12,345.68  
"{0:C}" -12345.6789 ($12,345.68)  
"{0:D}" 12345 12345  
"{0:D8}" 12345 00012345  
"{0:E}" 12345.6789 1234568E+004  
"{0:E10}" 12345.6789……


顶下 --------------------编程问答-------------------- 跟环境有关系

如果非要显示人民币  就自己写个 ¥  后面加字段 --------------------编程问答-------------------- tostring()应用很多的 很强大的
引用 3 楼 q107770540 的回复:
C# code

格式字符串 资料 结果  
"{0:C}" 12345.6789 $12,345.68  
"{0:C}" -12345.6789 ($12,345.68)  
"{0:D}" 12345 12345  
"{0:D8}" 12345 00012345  
"{0:E}" 12345.6789 1234568E+004  
"{0:E10}" 12345.6789 1.234……
--------------------编程问答-------------------- 100分啊。。。。 --------------------编程问答-------------------- 同意思24楼的
这样不管变什么环境都没事,直接在输出前写个¥ --------------------编程问答--------------------
引用 24 楼 wyq29 的回复:
跟环境有关系

如果非要显示人民币  就自己写个 ¥  后面加字段


+1 --------------------编程问答-------------------- 同意思24楼的
这样不管变什么环境都没事,直接在输出前写个¥ --------------------编程问答--------------------
using System;
using System.Globalization;
using System.Threading;

public class NumericFormats
{
   public static void Main()
   {
      // Display string representations of numbers for en-us culture
      CultureInfo ci = new CultureInfo("en-us");

      // Output floating point values
      double floating = 10761.937554;
      Console.WriteLine("C: {0}", 
              floating.ToString("C", ci));           // Displays "C: $10,761.94"
      Console.WriteLine("E: {0}", 
              floating.ToString("E03", ci));         // Displays "E: 1.076E+004"
      Console.WriteLine("F: {0}", 
              floating.ToString("F04", ci));         // Displays "F: 10761.9376"         
      Console.WriteLine("G: {0}",  
              floating.ToString("G", ci));           // Displays "G: 10761.937554"
      Console.WriteLine("N: {0}", 
              floating.ToString("N03", ci));         // Displays "N: 10,761.938"
      Console.WriteLine("P: {0}", 
              (floating/10000).ToString("P02", ci)); // Displays "P: 107.62 %"
      Console.WriteLine("R: {0}", 
              floating.ToString("R", ci));           // Displays "R: 10761.937554"            
      Console.WriteLine();

      // Output integral values
      int integral = 8395;
      Console.WriteLine("C: {0}", 
              integral.ToString("C", ci));           // Displays "C: $8,395.00"
      Console.WriteLine("D: {0}", 
              integral.ToString("D6", ci));          // Displays D: 008395"" 
      Console.WriteLine("E: {0}", 
              integral.ToString("E03", ci));         // Displays "E: 8.395E+003"
      Console.WriteLine("F: {0}", 
              integral.ToString("F01", ci));         // Displays "F: 8395.0"    
      Console.WriteLine("G: {0}",  
              integral.ToString("G", ci));           // Displays "G: 8395"
      Console.WriteLine("N: {0}", 
              integral.ToString("N01", ci));         // Displays "N: 8,395.0"
      Console.WriteLine("P: {0}", 
              (integral/10000).ToString("P02", ci)); // Displays "P: 83.95 %"
      Console.WriteLine("X: 0x{0}", 
              integral.ToString("X", ci));           // Displays "X: 0x20CB"
      Console.WriteLine();
   }
}
--------------------编程问答-------------------- 是在不行用一个笨方法,拼接字符串~~~ 给数字前面+1个 ¥ --------------------编程问答--------------------
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,