Fix a rounding error

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_3_0_BRANCH@78100 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart
2014-11-07 17:12:55 +00:00
parent 6a4b12865a
commit efd4638cf9

View File

@@ -691,7 +691,9 @@ bool wxRichTextFormattingDialog::ConvertFromString(const wxString& str, int& ret
float value = 0.0; float value = 0.0;
wxSscanf(str.c_str(), wxT("%f"), &value); wxSscanf(str.c_str(), wxT("%f"), &value);
// Convert from cm // Convert from cm
ret = (int) ((value * 100.0) /* + 0.5 */); // Do this in two steps, since using one step causes strange rounding error for VS 2010 at least.
float v = (value * 100.0);
ret = (int) (v);
return true; return true;
} }
else if (unit == wxTEXT_ATTR_UNITS_PERCENTAGE) else if (unit == wxTEXT_ATTR_UNITS_PERCENTAGE)
@@ -703,7 +705,8 @@ bool wxRichTextFormattingDialog::ConvertFromString(const wxString& str, int& ret
{ {
float value = 0.0; float value = 0.0;
wxSscanf(str.c_str(), wxT("%f"), &value); wxSscanf(str.c_str(), wxT("%f"), &value);
ret = (int) ((value * 100.0) /* + 0.5 */); float v = (value * 100.0);
ret = (int) (v);
} }
else if (unit == wxTEXT_ATTR_UNITS_POINTS) else if (unit == wxTEXT_ATTR_UNITS_POINTS)
{ {