- PR -

mod関数を使うには?

投稿者投稿内容
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-03-14 13:27
小数点以下の判断しなければいけないという状況自体があまり好きではないですが、

コード:

    Dim value As Double = 37.564#

    If value >= 0 Then
        If value <> System.Math.Floor(value) Then
            MessageBox.Show("小数あり")
            Return
        End If
    Else
        If value <> System.Math.Ceiling(value) Then
            MessageBox.Show("小数あり")
            Return
        End If
    End If

    MessageBox.Show("小数なし")


適当に書いてみました。
VB6 の場合は、Int/Fix 関数に置き換わるだけです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-03-14 13:35
引用:

かめたろさんの書き込み (2007-03-13 15:06) より:

なんかの型にmodメソッドってのがあったような気もしますけど。


そうでしたっけ?

あ、java.math.BigInteger.mod メソッドのことでしょうか。
vjslib.dll なのでギリギリセーフですね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2007-03-14 14:08
引用:

じゃんぬねっとさんの書き込み (2007-03-14 13:35) より:

引用:

かめたろさんの書き込み (2007-03-13 15:06) より:

なんかの型にmodメソッドってのがあったような気もしますけど。


そうでしたっけ?

あ、java.math.BigInteger.mod メソッドのことでしょうか。
vjslib.dll なのでギリギリセーフですね。


SqlInt32.Mod メソッドとか

個人的にはじゃんぬさんの「小数点以下の判断しなければいけないという
状況自体があまり好きではない」に清き一票を投じたいところですが、とり
あえずフォーマットしちゃってから考えるというやり方もあるかもしれないと
か。

コード:

    fNBK = Format(vNBKRIT, "#,##0.00")
    If fNBK.EndsWith(".00") = True Then
        fNBK = fNBK.Substring(0, fNBK.Length - ".00".Length)
    End If


いずれにしてもちょっとぐだぐだ感が抜けないところに自分の技量不足を感
じてしまいます orz

# これなら正規表現という手もありそうな気がするし…
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-03-14 14:23
引用:

ぽぴ王子さんの書き込み (2007-03-14 14:08) より:

SqlInt32.Mod メソッドとか:)


その発想はなかったわ... SqlTypes...
他にも、SqlByte、SqlInt16、SqlInt64 などにも Mod メソッドはありますね。(確か)

# mod (←camel) メソッドは、さすがにないでしょうけど。

文字列にしても結局、元が double とかなので精度は良くはならないですね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2007-03-15 09:26
引用:

ぽぴ王子さんの書き込み (2007-03-14 14:08) より:
とりあえずフォーマットしちゃってから考えるというやり方もあるかもしれないとか。


1.001を1と表示したいか1.00と表示したいかによりますよね。

引用:

コード:

    fNBK = Format(vNBKRIT, "#,##0.00")
    If fNBK.EndsWith(".00") = True Then
        fNBK = fNBK.Substring(0, fNBK.Length - ".00".Length)
    End If




これなら一行。

コード:

    fNBK = vNBKRIT.ToString("#,##0.00").Replace(".00", "")

ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2007-03-15 10:04
引用:

ぼのぼのさんの書き込み (2007-03-15 09:26) より:

1.001を1と表示したいか1.00と表示したいかによりますよね。


なるほど…
mod 演算子で振り分けると、1.001 は 1.00 側に倒れるんですね。
文字列に変換してから ".00" を削除すると、1.001 は 1 になると。
すっかり想定外でした。

引用:

これなら一行。

コード:

    fNBK = vNBKRIT.ToString("#,##0.00").Replace(".00", "")




うわあああぁぁぁ、それで良かったぁぁぁ ○| ̄|_
なんだか改めて自分の技量不足を実感してしまったり。

参考になりました。ぼのぼのさんどうもありがとうございました。
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。

スキルアップ/キャリアアップ(JOB@IT)