0

如何在 C# 中将 30.55273 转换为 30.055273 我正在使用 xbee 无线模块,它不发送分数,所以我必须将任何双精度值分成两部分 EX:30.055273 -> 30 和 055273 所以当我发送它们时我接收它们 30 和 55273 所以左边的零将被取消我该如何解决这个问题

4

4 回答 4

3

听起来你收到了两个整数,你想把它们粘在一起——其中一个被放大了一百万倍。那正确吗?

double ConvertToDouble(int wholePart, int fractionalPart)
{
    return wholePart + fractionalPart / 1000000d;
}

请注意,“d”部分非常重要——它确保您使用double算术(而不是整数算术)执行除法。

如果确切的数字对您很重要,那么您可能实际上应该使用decimal

decimal ConvertToDouble(int wholePart, int fractionalPart)
{
    return wholePart + fractionalPart / 1000000m;
}
于 2013-03-18T18:44:19.590 回答
2

只需选择一个乘数,例如 100000,取小数部分并乘以该数字,然后再除以该数字。

此外,您可以通过 XBee 发送您喜欢的任何数据。您可能只想将数据转换为字节数组。请参阅如何将浮点数组转换为 byte[] 并返回? 关于如何做到这一点。

于 2013-03-18T18:47:01.307 回答
1

建立在Block Frog的想法之上。在c#中构造一个字符串然后将其转换为double,如下所示:


String result = leftToDecimal.ToString() 
+ "." + zeroString(numberOfZeros) + fraction.ToString();
 double MyOriginalNumber = Convert.ToDouble(result);

Public string zeroString(int zeroCount)
{
   String result= "";
   for(int i=0; i< zeroCount; i++)
   result+="0";
}
于 2013-03-18T19:18:25.727 回答
1

您可以将它们作为字符串发送吗?然后这样做。

如果您只能发送整数值,则发送 3 个值。

例如:30.055273

  • 第一个数字在小数点左边(整数)
  • 第二个数字是小数点右边(分数)
  • 第三个数字是零的数量(占位符)
于 2013-03-18T18:50:13.933 回答