一見したところ、これは重複した言及を得るでしょう。そしてそれは非常にうまくいくかもしれませんが、ほとんどの人が答えがこの質問に似ていると思うと思います。Division returns zero奇妙なディビジョンビヘイビア
これは私のケースではありません。その場合、より小さい数をより大きい整数で割って0にすることです。それは理にかなっています。私のために起こっていることは意味をなさない。
はここに私のコードです:screenwidthため
decimal correctedImageWidth = screenWidth/maxColumnsWithMaxSizeImages;
値、int型で、1024
です。 maxColumnsWithMaxSizeImagesの値(intも)は3
です。
どうにかして、correctedImageWidth
は0になります。他のSOの質問のように、1024/3が0に等しくなく、四捨五入された数値も0にならないため、奇妙です。あなたは341
のようなものを得るだろうと思うだろう。
あなたは私のwatch
で見ることができるように:ここでは数字は、私は彼らが言うことをしていることの証明です。 screenWidth
が1024の場合、maxColumnsWithMaxSizeImages
は3です。ただし、これらの2をcorrectedImageWidth
に分割すると、0?私がこれから0を得る理由がありますか?私はこれを同じように混乱している同僚に示しました。ここに私のコード全体があります。おそらく私がやっていることがありますか?おそらく、両方ともintであり、両方とも有効な整数値を持っていると考えられます。しかし、明らかに私がやっていることがあるはずですか?ここでは、コードです:
int maxColumnsWithMaxSizeImages = (int)System.Math.Ceiling(decimal.Divide(1024, 480));
if (maxColumnsWithMaxSizeImages < _minimumImagesPerRow)
{
.....
} else if (maxColumnsWithMaxSizeImages > _maximumImagesPerRow)
{
....
} else
{
//between 2 and 4 columns
var screenWidth = App.ScreenWidth;
decimal correctedImageWidth = (decimal)((decimal)screenWidth/(decimal)maxColumnsWithMaxSizeImages);
decimal test2 = 1024/3;
decimal test3 = (decimal)1024/(decimal)3;
var test = correctedImageWidth;
}
UPDATE が何らかの理由で、私の変数宣言での紛争があったことが表示されます。どんな理由であれ、私はそれらを異なるスコープで宣言しましたが、それは紛争を巻き起こしていました。変数の名前を変更した後、私は修正された値を取得します。
私の場合、結果は '341'です:https://dotnetfiddle.net/AtXbS5 –
' test2'と 'test3'はどうなっていますか?また、 'decimal'にキャストしているので、今では小数除算をしています。 –
[mcve]はこの質問を本当に良いものにします。 – chris