Changeset 3577 in Sophya
- Timestamp:
- Feb 20, 2009, 12:17:14 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/SysTools/commander.cc
r3383 r3577 17 17 18 18 namespace SOPHYA { 19 20 //-------------------------------------------------- 21 // Pour ecrire une valeur double sous forme de string 22 // sans perte de precision, et si possible de maniere 23 // lisible (%g, sinon %.17e) 24 static char cval_strbuff_[64]; 25 char * cval_dble2str(double v) 26 { 27 char* str1 = cval_strbuff_; 28 sprintf(str1,"%g",v); 29 char* str2 = cval_strbuff_+32; 30 sprintf(str2,"%.17e",v); 31 double x1 = atof(str1); 32 double x2 = atof(str2); 33 double fx = fabs(v); 34 if (fx>0. && fabs(x2-x1)/fx>1e-12) return str2; 35 else return str1; 36 } 37 //-------------------------------------------------- 19 38 20 39 // Differents code de retour specifiques … … 219 238 break; 220 239 } 221 sprintf(buff, "%g", f); 222 string lvv = buff; 240 string lvv = cval_dble2str(f); 223 241 rcc = ExecuteOnce(lvv); 224 242 if (rcc == CMD_BREAKEXE_RC) return rcc; … … 1057 1075 res = cex.Value(); 1058 1076 } 1059 char cbuff[64]; 1060 sprintf(cbuff,"%g",res); 1061 string vv = cbuff; 1077 string vv = cval_dble2str(res); 1062 1078 SetVariable(kw, vv); 1063 1079 } … … 1805 1821 RPNExpressionEvaluator rpn(tokens, 1); 1806 1822 double res = rpn.Value(); 1807 char cbuff[64]; 1808 sprintf(cbuff,"%g",res); 1809 string vv = cbuff; 1823 string vv = cval_dble2str(res); 1810 1824 SetVariable(tokens[0],vv); 1811 1825 return 0;
Note:
See TracChangeset
for help on using the changeset viewer.