2016-10-21 23 views
-3

現在、アイテム(ホテル)のリストを繰り返しています。コンテンツエディタで1泊以上の価格を入力すると、1泊あたりの価格を調べる必要があります。C#タイプ変換(文字列からint)

if (!string.IsNullOrEmpty(resource)) 
{ 
    var results = JsonConvert.DeserializeObject(resource).ToString(); 
    if (!string.IsNullOrEmpty(results)) 
    { 
     var hotels = JsonConvert.DeserializeObject<ContainerHotelViewModel>(results).Hotels; 

     if (daysDuration > 1) 
     { 
      foreach (var hotel in hotels) 
      { 
       string convertInt = hotel.BaseRate; 
       int nightRate; 
       int.TryParse(hotel.BaseRate, out nightRate); 
       convertInt = nightRate/daysDuration;      
      } 
     } 

     return SortHotels(hotelIds, hotels); 
    } 
} 

だから私の理解では、私がintstringからhotel.BaseRateを変換したことです。だから、hotel.BaseRatedaysDurationで分けるのは意味があります。これは今や両方ともintであるため、1泊あたりの価格を取得することです。 foreachループの最後のコード行で私にエラーメッセージが表示されるので、間違っていることについて助言してください。

暗黙的に型intをstringに変換できません。

+0

今後の質問のために[MCVE]を提供してください。私。この場合は、 'string convertInt = 4/2; 'となります。これは、最初に問題を見つけるのに役立つ可能性があります。 –

答えて

3
string convertInt = hotel.BaseRate; 
int nightRate; 
int.TryParse(hotel.BaseRate, out nightRate); 
convertInt = nightRate/daysDuration; 

あなたが最初の文字列としてを宣言して、あなたの方程式からの応答に設定してみてください。

は、最初の行を削除し、これを最後に設定します。

int convertInt = nightRate/daysDuration; 
+0

あなたの内訳とJ.R.を助けてくれてありがとう:) – Jim41Mavs

4

あなたは、以前の行に文字列としてconvertInt定義:

string convertInt = hotel.BaseRate; 
+0

今はすべて意味があります!ご協力いただきありがとうございます! – Jim41Mavs

1

あなたのコードを変更してください。

Old code : convertInt = nightRate/daysDuration; 

New code : convertInt = (nightRate/daysDuration).ToString(); 

新しいコード行で古いコード行で更新してください。

ありがとうございました。

2

intを文字列に変換することはできません(convertIntはこのインスタンスの文字列です)。

ただし、これを行うことができます:

convertInt = (nightRate/daysDuration).ToString(); 

をまた、サイドノートとして: をあなたは3で£15をdevideしていたかのように、のIntを使用してはならないお金で作業している場合答えは5.33ポンドになりますが、intの小数点以下の桁は保持できません。

+0

あなたの助けてくれてありがとうと私はお金のためにintを使用しないことに関するあなたのアドバイスを取るでしょう! – Jim41Mavs

+0

謝罪@ Jim41Mavs、私は完全にどのタイプの変数を使うべきかを忘れてしまったようです。 Intの代わりにDoubleを使用してください:) また、変数を宣言するための 'var'コマンドについていくつかの調査を行います。 –

+0

、ありがとうMark! – Jim41Mavs

1

あなたpoblemはここにある:

foreach (var hotel in hotels) 
{ 
    string convertInt = hotel.BaseRate; 
    int nightRate; 
    int.TryParse(hotel.BaseRate, out nightRate); 
    convertInt = nightRate/daysDuration; 
} 

stringであり、あなたはそれにint値フォームnightRate/daysDurationを保存しよう。あなたは(nightRate/daysDuration).ToString()

を使用する必要があるので、あなたの行:

convertInt = nightRate/daysDuration; 

は次のようになります。

convertInt = (nightRate/daysDuration).ToString(); 
0

あなたのエラーが種類を混合です。プログラムはintがあるところに文字列が来るようにするため、intの.ToString()を呼び出さなければなりません。あなたのコードをリファクタリングして、必要なすべての変数が計算のために呼び出される前に適切な型で定義されるようにするのがよいでしょう。ちなみに、通貨の推奨タイプはDecimalです。 intの問題は、セントなどの小数点を表すことができず、doubleの使用に関する丸めの問題があることです。

関連する問題