IoTgod 5 years ago
parent 4e8fc94753
commit 242fe18dfe
  1. BIN
      a.exe
  2. 83
      as1.cpp

BIN
a.exe

Binary file not shown.

@ -3,6 +3,55 @@
#include <algorithm>
#include <string>
#include <sstream>
#include <cmath>
#define DOUBLE_MAX_LENGTH 6
namespace std {
string to_string(int val) {
char buf[20];
sprintf(buf, "%d", val);
return string(buf);
}
string to_string(unsigned val) {
char buf[20];
sprintf(buf, "%u", val);
return string(buf);
}
string to_string(long val) {
char buf[20];
sprintf(buf, "%ld", val);
return string(buf);
}
string to_string(unsigned long val) {
char buf[20];
sprintf(buf, "%lu", val);
return string(buf);
}
string to_string(float val) {
char buf[200];
sprintf(buf, "%f", val);
return string(buf);
}
string to_string(double val) {
char buf[2000];
sprintf(buf, "%f", val);
return string(buf);
}
string to_string(long double val) {
char buf[20000];
sprintf(buf, "%Lf", val);
return string(buf);
}
}
using namespace std;
@ -144,13 +193,41 @@ int Fraction::get_common_divisor() const
return t_top;
}
/*
void get_decimal_repeating_part(double f)
{
double t_dec = f - (int)f;
}
*/
int get_double_decimals_length(double d)
{
ostringstream out;
//out.precision(18);//覆盖默认精度
out<<d;
string s= out.str();
return s.length();
}
/* 两位以上*/
unsigned long int transfer_double_decimals_to_unsigned_long_int(double d)
{
unsigned long int t = (unsigned long int)(d*(1000000000));
while(d != 0 && t % (t/10) == 0 && t > 100) t /= 10;
return t;
}
inline unsigned long int get_double_decimals_part(double d)
{
return transfer_double_decimals_to_unsigned_long_int(d-floor(d));
}
@ -169,8 +246,8 @@ int main()
// for(int i =0; i < a.size(); i++) cout << a[i] <<endl;
//try{
cout << f.toStr()<<endl;
cout << f.val();
cout << get_double_decimals_part(34234)<<endl;
//cout << f.val();
//}catch(const char* msg){
// cerr << msg << endl;
//}

Loading…
Cancel
Save