https://bugs.winehq.org/show_bug.cgi?id=37913 Bug ID: 37913 Summary: Inconsistent rounding behaviour for sprintf Product: Wine Version: unspecified Hardware: x86 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: msvcp Assignee: wine-bugs(a)winehq.org Reporter: christopherwuy(a)gmail.com Distribution: --- sample source code and output demonstrating the problem: #include <iostream> #include <stdio.h> using namespace std; int main() { double a; a = 3.5; char *tmp = new char(100); char fmt[18] = " is %.0f"; sprintf(tmp, fmt, a); cout<<endl<<a<<tmp<<endl<<endl; a = -4.5; sprintf(tmp, fmt, a); cout<<endl<<a<<tmp<<endl<<endl; a = -0.5; sprintf(tmp, fmt, a); cout<<endl<<a<<tmp<<endl<<endl; a = 2597.625; printf("%.3f", a); sprintf(tmp, " is %.2lf", a); cout<<tmp<<endl<<endl; } This code running by wine 's Output is: 3.5 is 4 -4.5 is -4 -0.5 is -0 2597.625 is 2597.62 while windows' output is: 3.5 is 4 -4.5 is -5 -0.5 is -1 2597.625 is 2597.63 It indicated that Wine's sprintf used rounding rule which is Round half to even, while windows used Round half away from zero. You can find a detailed discussion of 'similar bug' form https://sourceware.org/bugzilla/show_bug.cgi?id=4943 -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.