回答
从字符串中删除点炭和直接将其转换为int
作为酸溶赛斯,使用的atoi,但与一捻,剥离期间的字符串并且使用的atoi的结果转换为INT。
是否存储为字符串(char*
)?然后,你可以创建自己的解析器:
int flstrtoint(const char *str) {
int r = 0;
int i = strlen(str) - 1;
while (i >= 0) {
if (isdigit(str[i])) {
r *= 10
r += str[i] - `0`;
}
i--;
}
return r;
}
flstrtoint("35.28"); // should return 3528
> //应该返回3528 但是OP对于“35.28”和“35.280234”需要35280 – unkulunkulu
这只是简单地在末尾添加'* = 10;'而不是真正重要。或者首先计算点的位置,然后乘以正确的值。 – orlp
最小基础代码:
std::string s = "35.28";
s.erase(std::remove(s.begin(), s.end(), '.'), s.end()); //removing the dot
std::stringstream ss(s);
int value;
ss >> value;
value *= 10;
std::cout << value;
输出:
35280
这是基本的想法。你可以使用上面的代码来使它更加灵活,以便它可以用于其他数字。
编辑:
这里是一个灵活的解决方案:
int Convert(std::string s, int multiplier)
{
size_t pos = s.find('.');
if (pos != std::string::npos)
{
pos = s.size() - (pos+1);
s.erase(std::remove(s.begin(), s.end(), '.'), s.end());
while(pos) { multiplier /= 10; pos--; }
}
else
multiplier = 1;
std::stringstream ss(s);
int value;
ss >> value;
return value * multiplier;
}
测试代码:
int main() {
std::cout << Convert("35.28", 1000) << std::endl; //35.28 -> 35280
std::cout << Convert("3.28", 1000) << std::endl; //3.28 -> 3280
std::cout << Convert("352.8", 1000) << std::endl; //352.8 -> 352800
std::cout << Convert("35.20", 1000) << std::endl; //35.20 -> 35200
std::cout << Convert("3528", 1000) << std::endl; //no change
return 0;
}
输出:
35280
3280
352800
35200
3528
输出中没有任何一致性。 3528保持不变,而35.28变成35280. 1000没有任何意义,它不代表信号位,它不保证小数的一致性。你到底想要保证什么?不要让小数点串(已经是int)乘以原来的乘数,而不是1。 –
- 1. 如何将包含美元金额的字符串转换为整数?
- 2. 以整数平分美元金额(十进制)
- 3. 将字符串十进制转换为十六进制数
- 4. 将字符串转换为十进制
- 5. 使用Python将十六进制字符串转换为十进制整数
- 6. Python - 从十六进制整数转换为十六进制字符串
- 7. 将整数十六进制格式转换为字符串
- 8. 将十六进制字符串转换为整数
- 9. 将特定的字符串/整数转换为十进制
- 10. 将整数转换为十六进制字符串
- 11. 在JavaScript中将整数转换为十六进制字符串
- 12. 在Groovy中将整数转换为十六进制字符串
- 13. SQL:将整数转换为十六进制字符串?
- 14. 将十六进制字符串转换为整数
- 15. 在Ruby中将整数转换为十六进制字符串
- 16. 将十六进制字符串转换为整数
- 17. C++如何将十六进制整数转换为字符串?
- 18. 将十六进制字符串转换为整数
- 19. 如何将十六进制整数转换为字符串
- 20. 将字符串转换为Python中的十进制整数
- 21. 如何将十六进制字符串转换为十进制?
- 22. 将十六进制字符串转换为十进制
- 23. 将字符串转换为十六进制到十六进制
- 24. 如何将表示为十进制字符串的64位整数转换为十六进制字符串
- 25. 从十六进制字符串转换为十六进制字符数组
- 26. Java:将字符串转换为压缩的十进制
- 27. 如何将'整数'字符串转换为'十六进制'字符串C
- 28. 将字符串转换为十进制字符串并返回十进制
- 29. PHP将字符串转换为十六进制和十六进制字符串
- 30. 转换4字节十六进制字符串为整数
我试过了。 'atoi'只返回小数点前的部分。 – Smurf64