C# 将字符串转换为双引号;削减;0
我在将字符串转换为double时遇到问题,当我在本地计算机上运行它时,它可以正常工作,但当我将它部署到服务器时,它会在前面“剪切”0。 例如,我有一个字符串值00123,当我将它转换为double时,我得到123。 我使用with,我使用的方法是C# 将字符串转换为双引号;削减;0,c#,asp.net,C#,Asp.net,我在将字符串转换为double时遇到问题,当我在本地计算机上运行它时,它可以正常工作,但当我将它部署到服务器时,它会在前面“剪切”0。 例如,我有一个字符串值00123,当我将它转换为double时,我得到123。 我使用with,我使用的方法是Convert.ToDouble(),宿主是somee.com 现在我只需将数字除以10000,就可以得到我所需要的,但正如你所想象的那样,这不是一个完美的解决方案,因此可能有人对如何解决它有更好的想法。这种情况发生是因为你的机器和服务器使用两种不同的文
Convert.ToDouble()
,宿主是somee.com
现在我只需将数字除以10000,就可以得到我所需要的,但正如你所想象的那样,这不是一个完美的解决方案,因此可能有人对如何解决它有更好的想法。这种情况发生是因为你的机器和服务器使用两种不同的文化 一些区域性使用“.”作为小数点,而其他区域性使用“,”。 在您的服务器文化中,“.”似乎是小数点,因此“00123”中的逗号被视为千位分隔符 我会对
double.TryParse
或Convert.ToDouble
使用重载,它接受IFormatProvider
并传入正确的CultureInfo
将来,尝试使用
CultureInfo.InvariantCulture
格式化所有内部数据(即数据持久性或系统中的数据流),并使用适当的CultureInfo
向用户显示数据。不同文化中的小数点不相同,因此,具有不同文化背景的计算机
尝试使用符合您的格式的显式
CultureInfo
使用double.Parse(string,CultureInfo)
。基于您将值表示为00123而不是0.0123的事实,我想服务器上的语言/文化设置与您自己的计算机上的不同
尝试从服务器上的某个位置打印出
System.Globalization.CultureInfo.CurrentCulture.Name的结果,并将其与本地计算机生成的结果进行比较。00123和123是相同的精确数字取决于区域性,某些区域性中的逗号可能表示小数点。因此,阿蒙是对的,但这取决于文化。你的数字代表0.0123吗。在这种情况下,你在进行转换时需要考虑文化因素谢谢,没有考虑到这一点,现在可以了:)很清楚,逗号并没有被忽略,而是被视为一个千位分隔符。很好的捕获@SimonSvensson,我已经给出了我的答案:)