>>194

double rhs = strtod( TextBox1.Text().c_str() );
double lhs = strtod( TextBox2.Text().c_str() );

if( ... /* 整数表示フラグ */ )
{
 stringstream s;
 s << static_cast<int>( rhs * lhs );
 TextBox3.Text( s.str() );
}

みたいなプログラムを組んでいて、仕様では
整数表示の際は端数を切り捨てることがきまっています。

>>186 の例のように
TextBox1 に 18.4、
TextBox2 に 100000 が代入された場合、
TextBox3 には 1839999 が表示されてしまうわけです。
両辺を n倍し、nで割る方式では上記問題を防げません。

とりあえず、↓の形で妥協することにしました。

int const n = 6;
sprintf( buf1, "%.*f", n, rhs * lhs );
sprintf( buf2, "%.*s", strlen(buf1)-n+1, buf1 );
TextBox3.Text( buf2 );