如何将double转换为另一个double c#
本文关键字:double 另一个 转换 | 更新日期: 2023-09-27 18:04:27
如何在c#中将30.55273转换为30.055273我正在使用xbee无线模块,它不发送分数数,所以我必须将任何双值切割成两部分EX: 30.055273 -> 30和055273,所以当我发送它们时,我接收它们30和55273,所以左边的零将被取消,我如何解决这个问题
听起来好像你收到了两个整数,你想把它们粘在一起——其中一个按一百万倍缩放。对吗?
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";
}