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