1

Rails では、インスタンス変数に日付を保存しています。その前の10年の始まりをつかむ必要があります。もしそうなら @date.year= 1968、私は戻る必要があり1960ます。どうすればいいですか?

4

3 に答える 3

6

これにはいくつかの方法があります。提案されているように、数値を除算して余りを切り捨てる整数除算をいつでも使用できます。1968/10が返され196、 を掛けると10が得られます1960。または単に、

@date.year = @date.year/10 * 10
@date.year 
=> 1960

私は剰余算術を使用する方法を好みます。そうすれば、次のように年から差し引くことができる@date.year % 10除算すると、残りが返されます。10

@date.year = @date.year - (@date.year % 10)
@date.year 
=> 1960

私が後者を好む理由は、整数除算の剰余の切り捨てが、コードを見ているすべての人にとって明らかなことではない可能性があるためです。ただし、剰余算術は、一般にすべてのプログラミング言語で同じように機能します。

日付を変更しようとしている場合は、適切な方法を使用する必要があることに注意してください。

@date.change(:year => 1960)
于 2013-02-03T21:54:37.960 に答える
3

整数の除算と乗算のみ: 試してください@date.year/10*10

于 2013-02-03T21:54:46.707 に答える
2

整数を 10 で割り、次に 10 を掛けます。

1.9.3-p286 :001 > 1855/10
 => 185 
1.9.3-p286 :002 > 185 * 10
 => 1850 

これが機能する理由 (Ruby、C/C++、Python、およびおそらく他の多くの言語) は、整数除算が常に剰余を切り捨てるためです。ただし、浮動小数点で除算する場合は当てはまりません。

于 2013-02-03T21:54:34.563 に答える