C++相談室 part51
■ このスレッドは過去ログ倉庫に格納されています
0196190
2006/07/21(金) 14:29:18double 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 );
■ このスレッドは過去ログ倉庫に格納されています