回答
從字符串中刪除點炭和直接將其轉換爲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