如何将double转换为另一个double C#?

如何将double转换为另一个double C#?,c#,xbee,C#,Xbee,如何在C#中将30.55273转换为30.055273 我正在使用xbee无线模块,它不发送分数,因此我必须将任何双精度值分为两部分,例如:30.055273->30和055273。因此,当我发送这两个值时,我将接收它们30和55273,因此左侧的零将被取消。我如何解决此问题,你想把它们粘在一起——其中一个的比例是一百万倍。是这样吗 double ConvertToDouble(int wholePart, int fractionalPart) { return wholePart +

如何在C#中将30.55273转换为30.055273
我正在使用xbee无线模块,它不发送分数,因此我必须将任何双精度值分为两部分,例如:30.055273->30和055273。因此,当我发送这两个值时,我将接收它们30和55273,因此左侧的零将被取消。我如何解决此问题,你想把它们粘在一起——其中一个的比例是一百万倍。是这样吗

double ConvertToDouble(int wholePart, int fractionalPart)
{
    return wholePart + fractionalPart / 1000000d;
}
请注意,“d”部分非常重要-它确保使用
double
算术(而不是整数算术)执行除法

如果准确的数字对您很重要,那么您可能实际上应该使用
十进制

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

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


此外,您还可以通过XBee发送您喜欢的任何数据。您可能只想将数据转换为字节数组。请参见如何执行此操作。

能否将它们作为字符串发送?那就这样做吧

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

例如:30.055273

  • 第一个数字是小数点的左边(整数)
  • 第二个数字是小数点的右边(分数)
  • 第三个数字是零的数量(占位符)

基于布洛克·青蛙的想法。在c#中构造一个字符串,然后将其转换为双精度,如下所示:



公共字符串zeroString(int zeroCount)
{
字符串结果=”;
对于(int i=0;i
@Ab…你要把它们分成两条线吗?是的,我想把它们粘在一起,分数部分总是6digits@Jon....if分馏部分有5个以上的DIDIGT,这种方法有效吗?我只是想弄清楚分母对0552734、05527346等值的作用。@Jon……不管我的评论如何,我只是看到了Abdelrahman在上面关于6位数字的评论:)所以当我知道分数部分有多少零时,我如何在C#字符串中构造它们回字符。在那一点上不需要计算零。我认为这并不能解决左边的零问题,xbee可以一个字节一个字节地发送,所以它只能发送字符。对它进行修改,它只是以字节形式发送数据。。。。。字节与字符不完全相同。字符只是表示某些符号的字节的一种特殊编码。XBee可以发送字节,就像计算机中的ram将所有内容存储为字节一样。浮点数只是对4个字节进行编码以表示浮点数的一种方式,如果发送这4个字节,则另一端将得到一个浮点数。我使用XBee并发送浮点数据和其他数据(除此之外还进行了压缩和加密!)@Keith Nicholas:你似乎是XBee的专业人员,所以你能在压缩和加密部分帮助我吗?可能有一些有用的链接或教程,提前感谢我不能将它们作为字符串发送:)我已经解决了这个问题,但是我真的很感谢你的帮助,雅琳:D:)我很荣幸地告诉你,你可以使用分隔符w kda bs,看起来你已经找到了自己的方法。Thnx
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";
}