2008-12-12 45 views
11

Tôi chắc chắn đây là một vấn đề rất đơn giản, nhưng tôi mới dùng VB.NET, vì vậy tôi đang gặp vấn đề với nó.Chia 'thập phân' trong VB.NET

Tôi có biến số Decimal và tôi cần chia thành hai biến riêng biệt, một biến chứa phần nguyên và một chứa phần phân số. Ví dụ, đối với x = 12,34 bạn sẽ kết thúc bằng y = 12 và z = 0,34.

Có chức năng tích hợp sẵn để thực hiện việc này hay tôi phải thử và làm việc theo cách thủ công?

Trả lời

19

Bạn có thể sử dụng Math.Truncate(decimal) và sau đó trừ số đó khỏi tài liệu gốc. Lưu ý rằng điều đó sẽ cung cấp cho bạn giá trị âm cho cả hai phần nếu đầu vào là số thập phân (ví dụ -1.5 => -1, -.5)

EDIT: Đây là phiên bản mã Eduardo sử dụng số thập phân:

Sub SplitDecimal(ByVal number As Decimal, ByRef wholePart As Decimal, _ 
       ByRef fractionalPart As Decimal) 
    wholePart = Math.Truncate(number) 
    fractionalPart = number - wholePart 
End Sub 
4

(Như Jon Skeet nói), hãy cẩn thận rằng phần nguyên của một số thập phân có thể lớn hơn một số nguyên, nhưng hàm này sẽ đưa bạn ý tưởng.

Sub SlipDecimal(ByVal Number As Decimal, ByRef IntegerPart As Integer, _ 
        ByRef DecimalPart As Decimal) 
     IntegerPart = Int(Number) 
     DecimalPart = Number - IntegerPart 
    End Sub 

Sử dụng phiên bản Jon nếu bạn đang sử dụng số lớn.

+0

thập phân có thể đi theo con đường bên ngoài phạm vi của số nguyên (và Longs) –

+0

Có, nhưng nó chỉ là ý tưởng –

0

Đơn giản chỉ cần:

DecimalNumber - Int(DecimalNumber) 
+0

tôi yêu cầu bạn hãy thêm một số bối cảnh nhiều hơn xung quanh câu trả lời của bạn. Các câu trả lời chỉ có mã hoặc chỉ liên kết rất khó hiểu. Nó sẽ giúp người hỏi và người đọc trong tương lai cả khi bạn có thể thêm nhiều thông tin hơn trong bài đăng của mình. – RBT

Các vấn đề liên quan