0

C#で30.55273を30.055273に変換する方法私はxbeeワイヤレスモジュールを使用していますが、小数部を送信しないため、double値を2つの部分にカットする必要がありますEX:30.055273->30と055273両方を送信する場合30と55273を受け取ると、左側のゼロがキャンセルされます。この問題を解決するにはどうすればよいですか。

4

4 に答える 4

3

2つの整数を受け取っているようですが、それらを結合したいのですが、そのうちの1つは100万倍にスケーリングされています。そうですか?

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

double「d」の部分は非常に重要であることに注意してください。整数演算ではなく、算術を使用して除算を実行することを確認する必要があります。

正確な数字が重要な場合は、実際に使用する必要がある可能性がありますdecimal

decimal ConvertToDouble(int wholePart, int fractionalPart)
{
    return wholePart + fractionalPart / 1000000m;
}
于 2013-03-18T18:44:19.590 に答える
2

100000のような乗数を選択し、小数部分を取り、それをその数で乗算し、後でその数で除算するだけです。

また、XBeeを介して好きなデータを送信できます。データをバイトの配列に変換したいだけかもしれません。floatの配列をbyte[]に変換して戻すにはどうすればよいですか?を参照してください。 それを行う方法について。

于 2013-03-18T18:47:01.307 に答える
1

文字列として送ってもらえますか?次に、それを行います。

整数値しか送信できない場合は、3つの値を送信します。

例:30.055273

  • 最初の数字は小数点の左側(整数)
  • 2番目の数値は小数点以下(分数)です
  • 3番目の数値はゼロの数です(プレースホルダー)
于 2013-03-18T18:50:13.933 に答える
1

BloackFrogのアイデアに基づいています。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";
}
于 2013-03-18T19:18:25.727 に答える