double d = 35.0 / 200.0; /* 本来の計算結果は0.175 */
char str[10];
sprintf(str, "%.2f", d); /* 0.18を期待 */

上記の計算結果は0.1749999999...となり、
その結果、文字列も0.17になってしまいます。

他の数値のパターンに悪影響を与えずに、
この例で0.18という文字列を作れるようにするには、
どのような誤差対応処理が必要なのでしょうか。