【发布时间】:2013-03-07 05:42:04
【问题描述】:
如何在 C# 中将 30.55273 转换为 30.055273 我正在使用 xbee 无线模块,它不发送分数,所以我必须将任何双精度值分成两部分 EX:30.055273 -> 30 和 055273 所以当我发送它们时我收到它们 30 和 55273 所以零左边的将被取消我该如何解决这个问题
【问题讨论】:
-
@Ab...你要把它们分成两个字符串吗?
如何在 C# 中将 30.55273 转换为 30.055273 我正在使用 xbee 无线模块,它不发送分数,所以我必须将任何双精度值分成两部分 EX:30.055273 -> 30 和 055273 所以当我发送它们时我收到它们 30 和 55273 所以零左边的将被取消我该如何解决这个问题
【问题讨论】:
基于 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";
}
【讨论】:
只需选择一个乘数,例如 100000,取小数部分并乘以该数字,然后再除以该数字。
此外,您可以通过 XBee 发送您喜欢的任何数据。您可能只想将数据转换为字节数组。请参阅How do I convert an array of floats to a byte[] and back? 了解如何执行此操作。
【讨论】:
您可以将它们作为字符串发送吗?然后这样做。
如果只能发送整数值,则发送 3 个值。
例如:30.055273
【讨论】:
听起来您正在接收两个整数,您希望将它们粘在一起 - 其中一个按一百万倍缩放。对吗?
double ConvertToDouble(int wholePart, int fractionalPart)
{
return wholePart + fractionalPart / 1000000d;
}
请注意,“d”部分非常重要 - 确保您使用 double 算术(而不是整数算术)执行除法。
如果确切的数字对您很重要,那么您可能实际上应该使用decimal:
decimal ConvertToDouble(int wholePart, int fractionalPart)
{
return wholePart + fractionalPart / 1000000m;
}
【讨论】: