答えて
は、文字列からのドット文字を削除し、アルス・サイスのよう
を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
オンラインデモ:http://ideone.com/apRNP基本的な考え方である
。上記のコードを作業して、他の番号にも使用できるように柔軟にすることができます。
EDIT:
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
ここ
一の柔軟なソリューションであります
オンラインデモ:http://ideone.com/uCujP
出力に一貫性はありません。 3528は35.28が35280になっている間は同じままです。1000は何も意味しません.SIGの数字を意味するものではなく、10進数のアライメントを保証しません。正確に何を保証しようとしていますか?小数点以下の文字列(すでにint)に元の乗数ではなく1を掛けます。 –
- 1. 小数点以下2桁で変換する文字列
- 2. 小数点以下を小数点以下の桁数に変換します。
- 3. Pythonで小数点以下の文字列を整数に変換する
- 4. 文字列の値を小数点以下の2桁に変換する
- 5. 小数点以下2桁の小数点以下2桁の小数点以下の桁数
- 6. MS Accessテーブルの小数点以下桁数を小数点に変換する
- 7. 浮動小数点数を小数点以下2桁に変換する
- 8. 小数点以下の桁からの数字の分割
- 9. bigdecimalと小数点以下の桁数
- 10. 小数点以下の桁数
- 11. 小数点以下の桁数
- 12. 小数点以下1桁以上の数字を印刷
- 13. 浮動小数点数を小数点以下の桁数に拡張する
- 14. 小数点以下の文字列の配列をbigintegerに変換する
- 15. 小数点以下2桁の浮動小数点数と小数点以下6桁の同じ浮動小数点数を比較する
- 16. VBA Excel - 整数に小数点以下の桁数を追加する
- 17. 2桁から小数点以下3桁に丸めます
- 18. 小数点以下2桁の小数点以下を切り捨てます
- 19. 小数点以下1桁に変数を掛ける
- 20. JSON文字列から小数点以下を削除する
- 21. BigDecimalを小数点以下3桁の通貨文字列にフォーマットする
- 22. 小数点以下6桁の値を部分文字列にする方法
- 23. 年次給与&小数点以下2桁の小数点以下の桁数を返します。
- 24. 小数点以下2桁の数字を印刷
- 25. 小数点/貨幣フィールドの小数点以下2桁
- 26. 浮動小数点/小数点から小数点以下3桁までを正確に丸めますか?
- 27. C#の小数点以下3桁の数字
- 28. 整数に小数点以下の桁数をゼロで埋め込むファイル
- 29. Javaで小数点以下2桁の文字列を印刷する方法
- 30. 小数点以下の桁のリスト
試しました。 'atoi'は小数点の前の部分だけを返します。 – Smurf64