2014-03-31 3 views
2

, когда я называю эту функцию наподобие этой закругленной (50.080, 3). Я получаю «50.08», как я могу заставить сохранить конечные нули?Круглый номер, но сохраняйте точные цифры

Public Function Rounded(ByVal Number, ByVal Decimals) 
    Rounded = Int(Number * 10^Decimals + 1/2)/10^Decimals 
End Function 
+2

Вы имеете в виду задний ноль? – Blorgbeard

+2

Вы не имеете в виду завершающие нули? Это проблема с презентацией, которая действительно не должна быть проблемой функции округления. – DeanOC

ответ

3
Dim RoundedString As String = FormatNumber(Rounded, Decimals, , , TriState.False) 

должны сделать это для вас

+0

это не работает, потому что его конвертация «1542.800» в «1,542.800» – XK8ER

+0

Простите об этом. Я отредактировал его, и теперь он должен быть исправлен. – Schickmeister

1

Пожалуйста, для Вашего собственного здоровья, включите Option Strict и Option Explicit, прекратите использование переменного возврата, если вы действительно хотите, и падение функции наследия VB6 (как Int).

Тогда вы, вероятно, можете взломать что-нибудь вместе с форматом строки, как это:

Public Function Rounded(number As Decimal, decimals As Integer) As String 
    Return number.ToString("0." & New String("0"c, decimals)) 
End Function 

Как правило, лучше всего использовать форматную строку себя, если вы можете, хотя, как и в num.ToString("0.000") для трех знаков после запятой, и падение Rounded полностью.

Смежные вопросы