#include<iostream>
#include <string>
#include<math.h>
#include <sstream>
using namespace std;
string do_fraction(long double value, int digits)
{
long double val1 = value;
long double resVal;
val1 = value* pow(10, digits);
if (val1 > 0)
{
resVal = floor(val1);
}
else {//防止负数进行四舍五入
resVal = ceil(val1);
}
resVal = resVal / (pow(10, digits));
ostringstream os;
os.setf(ios::fixed, ios::floatfield);//不以科学计数法输出,使用小数位输出
os.precision(digits);//设置小数位数
os << resVal;
string result;
istringstream is(os.str());//转为字符串
is >> result;
return result;
os.setf(ios::fixed, ios::floatfield);//不以科学计数法输出,使用小数位输出
os.precision(digits);//设置小数位数
os << resVal;
string result;
istringstream is(os.str());//转为字符串
is >> result;
return result;
}
int main() {
cout << do_fraction (1.5,0)<<endl;
cout << "~~~~~~~~~~~~~~~" << endl;
cout << do_fraction(1.4, 0) << endl;
cout << "~~~~~~~~~~~~~~~" << endl;
cout << do_fraction(1.256, 2) << endl;
cout << "~~~~~~~~~~~~~~~" << endl;
cout << do_fraction(1.254, 2) << endl;
cout << "~~~~~~~~~~~~~~~" << endl;
cout << do_fraction(1.12222222, 2) << endl;
cout << "~~~~~~~~~~~~~~~" << endl;
cout << do_fraction(1.6666666, 2) << endl;
cout << "~~~~~~~~~~~~~~~" << endl;
cout << do_fraction(1.6666666, 3) << endl;
cout << "~~~~~~~~~~~~~~~" << endl;
cout << do_fraction(1.6666666, 4) << endl;
cout << "~~~~~~~~~~~~~~~" << endl;
cout << do_fraction(1.60000021, 4) << endl;
cout << "~~~~~~~~~~~~~~~" << endl;
cout << do_fraction(100000000.0, 2) << endl;
cout << "~~~~~~~~~~~~~~~" << endl;
cout << do_fraction(100000131.12311, 2) << endl;
cout << "~~~~~~~~~~~~~~~" << endl;
cout << do_fraction(100000131.12511, 2) << endl;
system("pause");
return 0;
}