14

Visual Studio 2012 で、Autos、Locals、および Watch ウィンドウの浮動小数点型の既定の表示をカスタマイズする方法を探しています。私はネイティブ ビジュアライザー (Natvis) ユーティリティに精通していますが、これを実現するためのデバッガーの書式設定機能は見当たりません。同様に、プリミティブ型のデフォルトの表示をオーバーライドする手段を知りません (16 進数を有効にする以外に)。

目標は、ポイント、幾何学的ベクトルなどに対応する型に拡張された桁数の少ない表示文字列を作成することですが、型を展開するとすべての精度が表示されます。たとえば、Autos ウィンドウの中央の列では(0.000, 1.234, 2.429)なく、ポイント タイプの変数を表示する場合があります。m_x = 0.00000000, m_y = 1.234245213...

このページでフォーマット指定子を調べましたが、浮動小数点の精度を制御する方法がわかりません。

4

6 に答える 6

2

現在、プリミティブ型を NatVizzed にすることはできません。ただし、確認したい特定のプリミティブが、監視できる別のタイプのメンバーである場合は、そのタイプにフォーマットを適用できます。

<!-- displays the double value as 0.000 -->
<Type Name="DoubleHolder">
  <DisplayString>{(int)myDouble}.{(int)(myDouble*1000) % 1000}</DisplayString>
</Type>
于 2014-10-28T16:50:36.370 に答える
1

あなたはこれをあまり制御できません。ただし、プレビュー用に double を float にキャストすることで、デフォルトのビューよりも少し良いものを得ることができました。

<DisplayString>{{x={(float)x} y={(float)y}}}</DisplayString>

真の値を確認できるように、展開されたバージョンでは double のままにしました。通常の 3 つではなく、4 つまたは 5 つの値を水平方向にパックするには、これで十分でした。これにはまだいくつかの欠点があります。float の最後の数桁はガベージであり、実際にはそうではないのに精度エラーがあると思わせるかもしれません。ただし、Microsoft が数値出力に適切な書式指定子を追加するまでは、おそらくこれが最善の方法です。

ちなみに、値が通常十分に大きい場合は、float を int にキャストすることで、おそらく同様の「細断された精度」を得ることができます。

于 2015-01-16T23:55:33.970 に答える