首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >浮点数学,63.500000 x 2= 127000000

浮点数学,63.500000 x 2= 127000000
EN

Stack Overflow用户
提问于 2013-02-21 03:36:47
回答 1查看 161关注 0票数 3

以下代码有问题:

代码语言:javascript
运行
复制
private const int movementMultiplier = 2;

void Test() {
    XmlNode xnXCoordinate = xd.SelectSingleNode("/data/x");
    XmlNode xnYCoordinate = xd.SelectSingleNode("/data/y");

    int xLoc = Convert.ToInt32(Convert.ToSingle(xnXCoordinate.InnerText)) * movementMultiplier;
    int yLoc = Convert.ToInt32(Convert.ToSingle(xnYCoordinate.InnerText)) * movementMultiplier;
}

此代码在客户端的PC上运行(通过Bootcamp运行Windows2009年的MacBook ),给定值/结果:

代码语言:javascript
运行
复制
xnXCoordinate.InnerText = 63.500000
xnYCoordinate.InnerText = 242.000000

XLoc = 127000000
yLoc = 484000000

当我运行它的时候,我会想出:

代码语言:javascript
运行
复制
xnXCoordinate.InnerText = 63.500000
xnYCoordinate.InnerText = 242.000000

XLoc = 128
yLoc = 484

不知何故,Convert.ToInt32(Convert.ToSingle(x))似乎忘记了小数位。这会在多台PC上发生(但从来没有,我有权进行测试)。这里似乎发生了某种类型的浮点数学错误,但我不确定是什么错误。有没有人能告诉我发生了什么事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-21 03:41:44

关于

代码语言:javascript
运行
复制
Convert.ToInt32(Convert.ToSingle(x, CultureInfo.InvariantCulture) )

(已修复,感谢Pete的评论)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14988447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档