我想更改double或字符串的CultureInfo。
例如,我从代码中获取双倍值,格式为3015.0
我不知道这是什么单位,但我需要米的价值而这些不在米里因为我在cca.100m的高度
我尝试过:double.Parse(test, new System.Globalization.CultureInfo("hr-HR"));
和double.Parse(test, new System.Globalization.CultureInfo());
但没有什么是我需要的正确格式。
知道我能做什么吗?这是Windows表单C#应用程序,如果这很重要。框架4.0
修改:
正如你在LINK看到的那样,我之前遇到过类似的问题,并且用文化信息解决了这个问题。问题是图片1上的值是我得到的值,而图片2是我需要得到的真实值(当我说真的我的意思是正确的格式)我认为问题出现在我的文化中先前的问题我有小数值的问题)。
答案 0 :(得分:4)
这与文化信息无关。
看起来你正在以英尺为单位进行测量,而你期望它以米为单位。事实上,100 meters = 328.08399 feet
和你的测量可能是10个基础,即3015.0 = 301.5 feet
(一些GPS接收器不支持浮点数或双精度数,因此只返回整数乘以10得到一个十进制精度)
如果您使用的是廉价的GPS接收器而不是预期的,因为准确性不是那么好(这可以解释为什么你得到3015.0而不是3280)
我希望这会有所帮助。
答案 1 :(得分:2)
您的问题与CultureInfo无关,但与单位转换无关。可能你必须做一个单位转换。你确定这个号码不是301.5吗?这可能意味着altitue以英尺为单位。
double altitudeMeters = 0.3048 * altitudeFeet;
答案 2 :(得分:1)
当前文化的设置不会为您转换单位。它只影响数字的格式(例如,某些文化使用逗号而不是小数点的句点)。你必须自己完成单位转换。
答案 3 :(得分:1)
double.Parse
只会将字符串转换为数字。它不进行单位转换。当有小数逗号(例如法语)等时,不同的文化信息是
您必须在应用程序中构建一些逻辑,以将数字从看起来像英尺转换为米。如果你可以确定数据总是采用“错误”的格式,那么一个简单的英尺到米(1英尺= 0.3048米)的转换就可以了。鉴于这是一个GPS设备,您可以假设这一点。
如果数字可以是任何格式,那么您需要分析数字,如果它在合理范围之外,则转换它。但是,如果有人输入“100”,这将失败。这是米还是英尺?
为确保获得正确的单位,您必须让用户在单独的控件上选择单位或在输入字符串中包含单位。如果你执行后者,那么你需要进入解析字符串以查看它是否包含单位字符串,将其剥离,解析数字和字符串然后进行转换。
答案 4 :(得分:0)
海拔高度来自$ GPGGA字符串,表示正在使用的单位。 $ GPGGA字符串是什么样的?
请参阅http://aprs.gids.nl/nmea/#gga
如果您查看字符串中的原始数据,您将知道您是否正在收集正确的数字及其单位
亚历