C# CultureInfo NumberFormat NumberDecimalSeparator 问题

Posted

技术标签:

【中文标题】C# CultureInfo NumberFormat NumberDecimalSeparator 问题【英文标题】:C# CultureInfo NumberFormat NumberDecimalSeparator Problem 【发布时间】:2011-01-14 15:43:57 【问题描述】:

我想将我的应用程序的 NumberDecimalSeparator 从“.”更改为到 ”/”。当我在我的文本框中显示浮点数时它可以工作。但整数类型根本不显示。

我修改线程的文化以获得应用程序范围的格式。我的代码是这样的:

CultureInfo ci = new CultureInfo("fa-IR", true);
ci.NumberFormat.DigitSubstitution = DigitShapes.NativeNational;
ci.NumberFormat.NumberDecimalSeparator = "/";
Thread.CurrentThread.CurrentCulture = ci;

结果:

3.14 => "3/14" 100 => ""

有什么帮助吗?

【问题讨论】:

【参考方案1】:

我刚刚创建了这样的测试控制台应用程序,但得到了这样的输出:

Input next value:
3.14
3/14
Input next value:
100
100

我的代码是:

using System;
using System.Globalization;
using System.Threading;

namespace ConsoleApplication1

    class Program
    
        static void Main(string[] args)
        
            CultureInfo ci = new CultureInfo("en-US", true);            
            Thread.CurrentThread.CurrentCulture = ci;
            Console.WriteLine("Input next value:");
            string input = Console.ReadLine();

            while (input != "e")
            
                double dblInput = double.Parse(input);
                CultureInfo ci2 = new CultureInfo("fa-IR", true);
                ci2.NumberFormat.DigitSubstitution = DigitShapes.NativeNational;
                ci2.NumberFormat.NumberDecimalSeparator = "/";
                Thread.CurrentThread.CurrentCulture = ci2;

                Console.WriteLine(dblInput);
                Console.WriteLine("Input next value:");
                input = Console.ReadLine();
            
        
    

这里有什么不适用于您的问题吗?

【讨论】:

以上是关于C# CultureInfo NumberFormat NumberDecimalSeparator 问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 C# 在 String 或 Char 上使用 ToString() 时,在啥情况下需要提供 CultureInfo IFormatProvider?

获取一个国家的默认时区(通过 CultureInfo)

是否可以为 .NET 应用程序或仅为线程设置 CultureInfo?

C#中的指数函数

C# BackgroundWorker 的文化

怎样用C#显示DateTime的星期的方法