2014-07-13 124 views
-4

我想在逗號後加上我的所有雙精度值,小數點後兩位。 在這個值爲0.30的時刻,我的Datagridview顯示0.3 ..任何想法?Vb.net 2位小數雙倍

這是我的代碼:

eenheidsprijs = Math.Round(eenheidsprijs, 2) 
    basisbedrag = Math.Round(basisbedrag, 2) 
    kortingbedrag = Math.Round(kortingbedrag, 2) 
    netto = Math.Round(netto, 2) 
    btwbedrag = Math.Round(btwbedrag, 2) 
    totaal = Math.Round(totaal, 2) 

    Dim streenheidsprijs, strbasisbedrag, strkortingbedrag, strnetto, strbtwbedrag, strtotaal As String 

    streenheidsprijs = Format(eenheidsprijs, "0.00") 
    strbasisbedrag = Format(basisbedrag, "0.00") 
    strkortingbedrag = Format(kortingbedrag, "0.00") 
    strnetto = Format(netto, "0.00") 
    strbtwbedrag = btwbedrag.ToString("N", CultureInfo.InvariantCulture) 
    strtotaal = Format(totaal, "0.00") 


    eenheidsprijs = Double.Parse(streenheidsprijs) 
    basisbedrag = Double.Parse(strbasisbedrag) 
    kortingbedrag = Double.Parse(strkortingbedrag) 
    netto = Double.Parse(strnetto) 
    btwbedrag = Double.Parse(strbtwbedrag) 
    totaal = Double.Parse(strtotaal) 
+0

我可以知道你的預期輸出是什麼? – Suji

+0

無需轉換numeric => string =>數字'String.Format'和'.ToString'可用於以指定格式顯示數字。 DGV也內置格式。 – Plutonix

回答

0

您可以提供format stringcolumndefault cell style。在你的情況下,格式F2將是可取的。

在運行時:

myDataGridView.Columns("myColumnName").DefaultCellStyle.Format = "F2" 

在設計時:

enter image description here

樣品形式

Public Class Form1 

    Public Sub New() 
     Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US") 
     Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en-US") 
     Me.InitializeComponent() 
     Me.ClientSize = New Size(350, 400) 
     Me.column1 = New DataGridViewTextBoxColumn With {.Name = "Column1", .HeaderText = "Double (F2)", .ValueType = GetType(Double), .Width = 100} 
     Me.column1.DefaultCellStyle.Format = "F2" 
     Me.column2 = New DataGridViewTextBoxColumn With {.Name = "Column2", .HeaderText = "Double (F8)", .ValueType = GetType(Double), .AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill, .MinimumWidth = 100} 
     Me.column2.DefaultCellStyle.Format = "F8" 
     Me.grid = New DataGridView With {.Dock = DockStyle.Fill} 
     Me.grid.Columns.AddRange(Me.column1, Me.column2) 
     For i As Double = 0.0R To 9.0R : Me.grid.Rows.Add(i, i) : Next 
     Me.Controls.Add(Me.grid) 
    End Sub 

    Private WithEvents grid As DataGridView 
    Private WithEvents column1 As DataGridViewTextBoxColumn 
    Private WithEvents column2 As DataGridViewTextBoxColumn 

End Class 

enter image description here

+0

'不工作'告訴我**沒有**。更新您的問題以包含所有相關代碼。 –

+0

藉口,我很匆忙......我試過這個解決方案,但沒有成功。它仍然是0.3而不是0.30:s ...我發現了其他解決方案,但也沒有成功(Me.DataGridView1.Columns.Item(2).DefaultCellStyle.Format =「n2」 Me.DataGridView1.Columns.Item(2) .ValueType = GetType(Double)) – user3388946

+0

@ user3388946我已經添加了一個示例表單。除非你編輯你的問題(參考我以前的評論),那麼這是一樣好。 –

0

哪個值綁定到你的數據網格? streenheidsprijs或eenheidsprijs?字符串值格式化爲2位小數,但雙變量不會繼承要顯示的小數位數。事實上,存在線沒有值重新解析已被格式化的字符串值:

eenheidsprijs = Double.Parse(streenheidsprijs) 

數據網格列應要麼被綁定到該已被格式化到2 DP字符串值,或者應該配置數據網格中列的顯示屬性,以便它們僅顯示兩位小數。