Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将字符串转换为双引号;削减;0_C#_Asp.net - Fatal编程技术网

C# 将字符串转换为双引号;削减;0

C# 将字符串转换为双引号;削减;0,c#,asp.net,C#,Asp.net,我在将字符串转换为double时遇到问题,当我在本地计算机上运行它时,它可以正常工作,但当我将它部署到服务器时,它会在前面“剪切”0。 例如,我有一个字符串值00123,当我将它转换为double时,我得到123。 我使用with,我使用的方法是Convert.ToDouble(),宿主是somee.com 现在我只需将数字除以10000,就可以得到我所需要的,但正如你所想象的那样,这不是一个完美的解决方案,因此可能有人对如何解决它有更好的想法。这种情况发生是因为你的机器和服务器使用两种不同的文

我在将字符串转换为double时遇到问题,当我在本地计算机上运行它时,它可以正常工作,但当我将它部署到服务器时,它会在前面“剪切”0。 例如,我有一个字符串值00123,当我将它转换为double时,我得到123。 我使用with,我使用的方法是
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,我已经给出了我的答案:)