次のコードが問題です。
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 経由で Windows を実行している ~ 2009 MacBook) で実行され、指定された値/結果があります。
xnXCoordinate.InnerText = 63.500000
xnYCoordinate.InnerText = 242.000000
XLoc = 127000000
yLoc = 484000000
実行すると、次のようになります。
xnXCoordinate.InnerText = 63.500000
xnYCoordinate.InnerText = 242.000000
XLoc = 128
yLoc = 484
どういうわけかConvert.ToInt32(Convert.ToSingle(x))
小数点以下を見失っているようです。これは複数のPCで発生します(ただし、テストにアクセスできるPCはありません)。ここで何らかの種類の浮動小数点演算エラーが発生しているように見えますが、何が原因かわかりません。誰が何が起こっているのか提案できますか?