• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:数値を文字列として結合した結果を数値に変換する)

数値を文字列として結合した結果を数値に変換する方法とは?

このQ&Aのポイント
  • プログラムで複数の数値を文字列として結合し、それを数値に高速に変換する方法を教えてください。
  • 現在のコードでは数値を文字にして結合し、それを数値に変換していますが、他にスマートな方法があるのか知りたいです。
  • この処理において、数値を文字列として結合することやキャスト処理が無駄な気がしています。効率的な方法があれば教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • sknbsknb2
  • ベストアンサー率38% (1158/3030)
回答No.1

(1)i2を文字列に変換して桁数を確認。 (2)convertedInt=i1*(10^[i2の桁数])+i2 で、どうでしょう。速くなるかどうかはわかりません(-_-;

Unripe01
質問者

お礼

sknbsknb2さん 回答ありがとうございます。 C#なので、べき乗に違うコードを行いましたが 10,000,000回処理で3秒と1.4秒程度ですが sknbsknb2さんのコードのほうが2倍程度早かったです! ありがとうございます。 --検証コード>> static void Main( string[] args ) { //初期化 Stopwatch _sw = new Stopwatch();//速度測定用クラス const int counter = 10000000;//実行回数 int i1 = 100; int i2 = 25; int convertedInt = 0; //-------------旧ロジック------------- Console.WriteLine( "旧ロジック" + counter + "回ループします" ); _sw.Start(); for( int i = 0; i < counter; i++ ) { convertedInt =Convert.ToInt32( i1.ToString() + i2.ToString() ); } _sw.Stop(); Console.WriteLine( string.Format( "実行時間:{0} //{1}", _sw.Elapsed.TotalSeconds, convertedInt ) ); _sw.Reset(); Console.WriteLine(); //-------------検証ロジック------------- convertedInt = 0; Console.WriteLine( "新ロジック" + counter + "回ループします" ); _sw.Start(); for( int i = 0; i < counter; i++ ) { //System.Math.Pow で累乗 convertedInt = Convert.ToInt32( i1 * System.Math.Pow( 10, i2.ToString().Length ) + i2 ) ; } _sw.Stop(); Console.WriteLine( string.Format( "実行時間:{0} //{1}", _sw.Elapsed.TotalSeconds, convertedInt ) ); } --結果>> 旧ロジック10000000回ループします 実行時間:3.2769354 //10025 新ロジック10000000回ループします 実行時間:1.4973275 //10025 続行するには何かキーを押してください . . .

関連するQ&A