จะเขียนโปรแกรมปัดเศษทศนิยมทิ้ง เห็นใน Visual Studio 2008 มี DataColumns.Expression ให้ใช้ ง๊ายยย........ง่าย... ไม่ต้องเปลืองแรงคำนวณเอง แต่.... แม่เจ้า ไม่มีฟังก์ชัน floor ให้ใช้ ด้วยความขี้เกียจรื้อโค้ด (ถ้ารื้อแล้วใช้ LINQ จะเสียเวลาน้อยกว่านี้) เลยพยายามใช้เครื่องมือของ Expression เท่าที่มี หน้าตาสูตร Expression ที่ให้ผลลัพธ์เป็น floor จึงออกมาประมาณนี้
Using datacolumn As New DataColumn() With {.DataType = GetType(Integer), .ColumnName = "SPToInt", .Caption = "แต้ม", .Expression = "SumPrice*100", .AllowDBNull = True}
Datatable.Columns.Add(datacolumn)
End Using
Using datacolumn As New DataColumn() With {.DataType = GetType(Integer), .ColumnName = "SPMod100", .Caption = "แต้ม", .Expression = "SPToInt%100", .AllowDBNull = True}
Datatable.Columns.Add(datacolumn)
End Using
Using datacolumn As New DataColumn() With {.DataType = GetType(Integer), .ColumnName = "TruePoint", .Caption = "แต้ม", .Expression = "(SPToInt-SPMod100)/100", .AllowDBNull = True}
Datatable.Columns.Add(datacolumn)
End Using
แล้วก็เอา col("TruePoint") ไปใช้
ที่ต้องแยก 3 column เพราะว่า compiler ไม่ยอมให้ใช้ %(mod = หารเอาเศษ) กับ Type ที่เป็น Int32 กับ Single,Double
ถ้าเขียนบรรทัดเดียวได้ คงจะประมาณนี้ ไม่แน่ใจว่าลดรูปได้อีกหรือเปล่า
datacolumn.expression = ((SumPrice*100)-((SumPrice*100)%100))/100
นี่ยังดีที่มี % ให้ใช้ ไม่งั้นได้ไปขี่ช้างจับตั้งแตน ใช้พวก convert + len + substring+iif อะไรมากมายแน่ ๆ
ยังคงติดอาการโรคจิต ทำอะไรง่าย ๆ ไม่เป็น... เหมือนเดิม...
ความคิดเห็น
แสดงความคิดเห็น