bool cmp2(string a, string b){
if (a.size() == b.size()) return a > b;
return a.size() > b.size();
}
bool cmp3(string a, string b){
if (apos != bpos) return apos > bpos;
for (int i=0; i<apos-1; i++){
if (a[i] != b[i]) return a[i] > b[i];
}
for (int i=apos; i<a.size(); i++){
if (a[i] != b[i]) return a[i] > b[i];
}
return false;
}
string bl(string &a, int pos){
if (a.find('.') == -1) a += '.';
for (int i=1; i<=pos; i++) a += '0';
}
bool cmp(string a, string b){
apos = a.find('.');
bpos = b.find('.');
bool at = (apos != -1), bt = (bpos != -1);
if (!at && !bt) return cmp2(a, b);
int a_0 = a.size()-apos-1, b_0 = b.size()-bpos-1;
if (at && !bt){
bl(b, a_0);
return cmp3(a, b);
}
if (!at && bt){
bl(a, b_0);
return cmp3(a, b);
}
if (a_0 > b_0) bl(b, a_0-b_0);
else if (a_0 < b_0) bl(a, b_0-a_0);
return cmp3(a, b);
}
这个代码的 cmp 实现了一个判断两个 string 所表示的实数大小的作用(a>b 返回 true,否则返回 false),但是有问题,求到底有什么问题?