Added precision parameter to wxString::From[C]Double().
Optionally support fixed precision in wxString::FromDouble() and FromCDouble() methods. This is mostly useful for the latter to be able to format numbers in portable way (using dot as decimal separator) without loss of precision but also do it for the former for consistency. Closes #12973. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67181 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -1839,17 +1839,43 @@ bool wxString::ToCDouble(double *pVal) const
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
/* static */
|
||||
wxString wxString::FromCDouble(double val)
|
||||
wxString wxString::FromDouble(double val, int precision)
|
||||
{
|
||||
wxCHECK_MSG( precision >= -1, wxString(), "Invalid negative precision" );
|
||||
|
||||
wxString format;
|
||||
if ( precision == -1 )
|
||||
{
|
||||
format = "%g";
|
||||
}
|
||||
else // Use fixed precision.
|
||||
{
|
||||
format.Printf("%%.%df", precision);
|
||||
}
|
||||
|
||||
return wxString::Format(format, val);
|
||||
}
|
||||
|
||||
/* static */
|
||||
wxString wxString::FromCDouble(double val, int precision)
|
||||
{
|
||||
wxCHECK_MSG( precision >= -1, wxString(), "Invalid negative precision" );
|
||||
|
||||
#if wxUSE_STD_IOSTREAM && wxUSE_STD_STRING
|
||||
// We assume that we can use the ostream and not wstream for numbers.
|
||||
wxSTD ostringstream os;
|
||||
if ( precision != -1 )
|
||||
{
|
||||
os.precision(precision);
|
||||
os.setf(std::ios::fixed, std::ios::floatfield);
|
||||
}
|
||||
|
||||
os << val;
|
||||
return os.str();
|
||||
#else // !wxUSE_STD_IOSTREAM
|
||||
// Can't use iostream locale support, fall back to the manual method
|
||||
// instead.
|
||||
wxString s = FromDouble(val);
|
||||
wxString s = FromDouble(val, precision);
|
||||
#if wxUSE_INTL
|
||||
wxString sep = wxLocale::GetInfo(wxLOCALE_DECIMAL_POINT,
|
||||
wxLOCALE_CAT_NUMBER);
|
||||
|
||||
Reference in New Issue
Block a user