oleaut32: Fix fractional calculation.
This commit is contained in:
parent
297e559af4
commit
a78490bf8a
|
@ -390,7 +390,7 @@ static void test_VarFormat(void)
|
|||
VARFMT(VT_R8,V_R8,8.0995,"#.##",S_OK,"8.1");
|
||||
VARFMT(VT_R8,V_R8,0.0994,"#.##",S_OK,".1");
|
||||
VARFMT(VT_R8,V_R8,1.00,"#,##0.00",S_OK,"1.00");
|
||||
todo_wine VARFMT(VT_R8,V_R8,0.0995,"#.###",S_OK,".1");
|
||||
VARFMT(VT_R8,V_R8,0.0995,"#.###",S_OK,".1");
|
||||
|
||||
|
||||
/* 'out' is not cleared */
|
||||
|
|
|
@ -1296,8 +1296,7 @@ static HRESULT VARIANT_FormatNumber(LPVARIANT pVarIn, LPOLESTR lpszFormat,
|
|||
/* Rounding the number */
|
||||
if (have_frac > need_frac)
|
||||
{
|
||||
prgbDig = &rgbDig[have_int + need_frac ? need_frac + 1 : 0];
|
||||
if (*prgbDig < 5) prgbDig--;
|
||||
prgbDig = &rgbDig[have_int + need_frac];
|
||||
have_frac = need_frac;
|
||||
if (*prgbDig >= 5)
|
||||
{
|
||||
|
@ -1320,10 +1319,10 @@ static HRESULT VARIANT_FormatNumber(LPVARIANT pVarIn, LPOLESTR lpszFormat,
|
|||
}
|
||||
else
|
||||
(*prgbDig)++;
|
||||
/* We converted trailing digits to zeroes => have_frac has changed */
|
||||
while (have_frac > 0 && rgbDig[have_int + have_frac - 1] == 0)
|
||||
have_frac--;
|
||||
}
|
||||
/* We converted trailing digits to zeroes => have_frac has changed */
|
||||
while (have_frac > 0 && rgbDig[have_int + have_frac - 1] == 0)
|
||||
have_frac--;
|
||||
}
|
||||
TRACE("have_int=%d,need_int=%d,have_frac=%d,need_frac=%d,pad=%d,exp=%d\n",
|
||||
have_int, need_int, have_frac, need_frac, pad, exponent);
|
||||
|
|
Loading…
Reference in New Issue