如何将double转换为另一个double c#

本文关键字:double 另一个 转换 | 更新日期: 2023-09-27 18:04:27

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

如何将double转换为另一个double c#

听起来好像你收到了两个整数,你想把它们粘在一起——其中一个按一百万倍缩放。对吗?

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

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

如果精确的数字对你很重要,你可能应该使用decimal:

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

选择一个乘数,比如100000,取小数部分乘以那个数字,然后除以那个数字。

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

可以将它们作为字符串发送吗?那就照做。

如果你只能发送整数值,那么发送3个值

例如:30.055273

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

以黑蛙的想法为基础。用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";
}