CultureInfo和Double.parse和double.toString无法正常工作 [英] CultureInfo and Double.parse and double.toString not worked correctly

查看:123
本文介绍了CultureInfo和Double.parse和double.toString无法正常工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何强制c#应用程序使用。小数点分隔符,并忽略服务器中的区域性设置。我在使用double.ToString和double.parse
时遇到了这个问题,由于应用程序的规模很大,我应该更改应用程序级别的设置。

How can I force c# application to use . for decimal separator and ignore culture settings in server. I have this problem with double.ToString and double.parse I should change setting in application level because of large scale of application.

在类似的情况下会发生异常double.parse( 1/25)和1.25 ToString

exception occurse in case like double.parse("1/25") and 1.25 ToString

我尝试过此代码

string CultureName = Thread.CurrentThread.CurrentCulture.Name;
        CultureInfo ci = new CultureInfo(CultureName);
        if (ci.NumberFormat.NumberDecimalSeparator != ".")
        {
            // Forcing use of decimal separator for numerical values
            ci.NumberFormat.NumberDecimalSeparator = ".";
            Thread.CurrentThread.CurrentCulture = ci;
        }

在app_start中开始更改文化但无法解决问题的请求和方法

in app_start begin request and method that change culture but can't solve problem

应用程序在.net 3.5中正常工作,但升级到.net 4.6.2后,此问题在服务器2012和Windows 10上发生。

The application was working correctly in .net 3.5 but after upgrade to .net 4.6.2 this problems happened on server 2012 and windows 10.

推荐答案

我定义了一种方法,并在更改文化信息的应用程序中的每个位置使用了该方法

I defined a method and use it in every where in application that changes cultureinfo

public static void CorrectNumberFormat()
    {
        var culture = CultureInfo.CreateSpecificCulture(CultureInfo.CurrentCulture.Name);
        if (culture.NumberFormat.NumberDecimalSeparator != ".")
        {
            culture.NumberFormat.NumberDecimalSeparator = ".";
            culture.NumberFormat.CurrencyDecimalSeparator = ".";
            culture.NumberFormat.PercentDecimalSeparator = ".";
            CultureInfo.DefaultThreadCurrentCulture = culture;
            CultureInfo.DefaultThreadCurrentUICulture = culture;

            Thread.CurrentThread.CurrentCulture = culture;
            Thread.CurrentThread.CurrentUICulture = culture;
        }
    }

这篇关于CultureInfo和Double.parse和double.toString无法正常工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆