我将字符串转换为double时遇到问题,当我在本地计算机上运行它时,它运行正常但是当我将它部署到服务器时,它会在前面“削减”0。
例如,我的字符串值为0,0123,当我将其转换为double时,我得到123。
我将ASP.NET与C#一起使用,我使用的方法是Convert.ToDouble()
,托管是somee.com。
现在我只是将数字除以10000得到我需要的东西,但是你可以想象它不是完美的解决方案所以也许有人更好地了解如何解决它。
答案 0 :(得分:2)
这是因为您的机器和服务器使用两种不同的文化。
有些文化使用“。”作为小数点,而其他人使用“,”。 似乎在您的服务器文化中,“。”是小数点 - 因此“0,0123”中的逗号被视为千位分隔符。
我会使用double.TryParse
或Convert.ToDouble
的重载来获取IFormatProvider
并传入正确的CultureInfo
。
将来,请尝试使用CultureInfo.InvariantCulture
格式化所有内部数据(即数据持久性或系统中的数据流),并使用正确的CultureInfo
向用户显示数据。< / p>
答案 1 :(得分:0)
不同文化之间的小数点不一样,因此,具有不同文化背景的计算机也是如此。
尝试将double.Parse(string, CultureInfo)
与明确适用于您的格式的CultureInfo
一起使用。
答案 2 :(得分:0)
根据您将值表示为0,0123而不是0.0123的事实,我猜服务器上的语言/文化设置与您自己的机器上的语言/文化设置不同。
尝试从服务器上的某个位置打印出System.Globalization.CultureInfo.CurrentCulture.Name
的结果,并将其与本地计算机生成的结果进行比较。