我如何将双倍转换为另一个双C#?

时间:2013-03-18 18:42:37

标签: c# xbee

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

4 个答案:

答案 0 :(得分:3)

听起来你正在收到两个整数,你想把它们粘在一起 - 其中一个缩放了一百万。是吗?

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

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

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

decimal ConvertToDouble(int wholePart, int fractionalPart)
{
    return wholePart + fractionalPart / 1000000m;
}

答案 1 :(得分:2)

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

此外,您可以通过XBee发送您喜欢的任何数据。您可能只想将数据转换为字节数组。有关如何执行此操作,请参阅How do I convert an array of floats to a byte[] and back?

答案 2 :(得分:1)

你能把它们作为字符串发送吗?然后这样做。

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

例如:30.055273

  • 第一个数字是十进制(整数)
  • 第二个数字是小数(分数)
  • 第三个数字是零(占位符)
  • 的数量

答案 3 :(得分: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";
}