2013-09-10 3 views
0

Я пытаюсь выполнить вычисление в функции, чтобы выработать процент. Однако процентная переменная появляется как 0. Что я делаю неправильно?VB6 Store Десятичное число

Public FullLoopNum as Integer 
Public ReportPercentage As Integer 
Public ReportRecordNum As Integer 

Public Function WebOutput 

ReportRecordNum = 1 
FullLoopNum = 4 

ReportPercentage = (ReportRecordNum \ FullLoopNum) 
ReportPercentage = ReportPercentage * 100 



End Function 
+4

Целые числа * целые * числа ... т. Е. Десятичные разряды. – crashmstr

+0

Да, я так думал –

+0

Не путайте себя и других, используя слова типа «десятичный», если это не то, что вы имеете в виду. То, с чем вы хотите работать, - это * реальные * числа, и вы обычно приближаетесь к ним, чтобы работать с ними, используя типы «Single» или «Double». https://en.wikipedia.org/wiki/Real_number – Bob77

ответ

3

Используйте тип Double и смените оператор деления на косую черту.

Public FullLoopNum as Integer 
Public ReportPercentage As Double 
Public ReportRecordNum As Integer 

ReportPercentage = (ReportRecordNum * 100/FullLoopNum) 
+0

Вы не можете объявить переменную как 'Decimal' в VB6, к сожалению. –

+0

Работает слишком много в SQL недавно. Должно быть указано Double. Я отредактировал свой ответ соответственно. –

+1

@ PhoenixX_2 Ответ был исправлен. –

1

Вы используете только целые числа, которые не являются числами с плавающей точкой (целые). Вам понадобится комбинация типа данных Variant и функции CDec. Что-то вроде этого:

Public FullLoopNum as Variant 
Public ReportPercentage As Variant 
Public ReportRecordNum As Variant 

ReportPercentage = CDec(ReportRecordNum/FullLoopNum) 
ReportPercentage = CDec(ReportPercentage * 100) 

Я не проверял, но это должно дать вам представление о том, как действовать, используя CDec. В качестве альтернативы вы можете использовать тип данных .

+0

Я бы уточнил, что необходимо использовать тип данных «Валюта». Таким образом, вам не нужно использовать 'Variant'. И тип данных «Десятичный» немного массивный. –

+0

@ PhoenixX_2, да, согласен. –

+0

Кажется, округление числа. Я должен получать номер 1.25, но он выводит 1. Будет ли тип данных валюты работать, поскольку это не для валюты? –

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