PHP, Java, JavaScript, XML, XHTML, HTML, CSS, ASP, Delphi, Assembly, LaTeX, C, UML, Flash, Perl, SQL, Python, Zope, Pascal, WML. Se conhece mais de 3 siglas referidas, este é o forum para si.
Moderadores: Administradores, Moderadores
por jluisfer » Terça Set 18, 2007 11:33
Estou a fazer um programa para testar qual é o maior factor primo de um numero grande,o que acontece é qd faço por exemplo 454546545432 mod 2 da overflow pq segundo me parece o resultado é um nº muito grande.Como é que posso dar a volta a isto?
-
jluisfer
- Membro de Prata

-
- Mensagens: 345
- Registado: Segunda Fev 02, 2004 10:42
- Localização: Lisboa
-
por CoolMaster » Terça Set 18, 2007 11:38
não sei vb, mas não tens um tipo de dados inteiro de 32 (long) ou até 64bits (long long) para aí?
-
CoolMaster
- Membro de Prata

-
- Mensagens: 137
- Registado: Segunda Dez 25, 2006 0:54
- Localização: Porto
-
por SkylineGTR » Terça Set 18, 2007 11:46
- Código: Seleccionar todos
Dim numero As Int64
Declara uma variavel com 64bits.
i7 920 | ASUS P6T Deluxe V2 | 6GB Corsair Dominator PC3-12800 | BFG GTX285 OC2 | 2x WD 640GB + WD 750GB + Seagate 750GB + Samsung F1 1TB | Corsair HX-620 | HP w2207 | Lian Li PC-V1110B
-
SkylineGTR
- Membro Vitalício

-
- Mensagens: 4184
- Registado: Terça Dez 28, 2004 22:26
por jluisfer » Terça Set 18, 2007 13:05
Não existe esse tipo de variaveis no VB6
-
jluisfer
- Membro de Prata

-
- Mensagens: 345
- Registado: Segunda Fev 02, 2004 10:42
- Localização: Lisboa
-
por SkylineGTR » Terça Set 18, 2007 13:41
Pois, o Int64 é um tipo em VB.NET.
Em VB6 tens:
Integer: 16bits - valores entre –32,768 e 32,767
Long: 32bits - valores entre 2,147,483,648 e 2,147,483,647
Em VB6 não tens inteiros a 64bits, tens o Double...
Double: 64bits - valores entre –1.79769313486232E+308 e 1.79769313486232E+308
Senão podes sempre guardar o resultado numa String...
i7 920 | ASUS P6T Deluxe V2 | 6GB Corsair Dominator PC3-12800 | BFG GTX285 OC2 | 2x WD 640GB + WD 750GB + Seagate 750GB + Samsung F1 1TB | Corsair HX-620 | HP w2207 | Lian Li PC-V1110B
-
SkylineGTR
- Membro Vitalício

-
- Mensagens: 4184
- Registado: Terça Dez 28, 2004 22:26
por jluisfer » Terça Set 18, 2007 15:41
O problema parece-me que é mesmo quando ele faz a conta,já experimentei definir a variavel como double e nada e ja tb fiz resultado=val("343534343535322") mod 2 e dá à mesma overflow
-
jluisfer
- Membro de Prata

-
- Mensagens: 345
- Registado: Segunda Fev 02, 2004 10:42
- Localização: Lisboa
-
por Fenrir » Quarta Set 19, 2007 9:55
e que tipo de variavel é resultado? Não tens que fazer um cast ?
se resultado for do tipo inteiro
resultado = decimal / mod 2 é capaz de dar estouro, ou valores incorrectos.
-

Fenrir
- Membro de Prata

-
- Mensagens: 354
- Registado: Segunda Set 20, 2004 22:33
- Localização: Porto
por jluisfer » Quarta Set 19, 2007 14:00
So uso nºs inteiros nessa conta
-
jluisfer
- Membro de Prata

-
- Mensagens: 345
- Registado: Segunda Fev 02, 2004 10:42
- Localização: Lisboa
-
por LMX » Sábado Out 06, 2007 11:34
boas!
não estou a perceber muito bem, mas pelo menos em c e na minha maquina um int são 32 bits e pelo que mostraste ai se tens int de 16 bits é normal que estourem o resultado que la metes é tremendamente maior que o máximo que ele suporta.
Agora...também não sei qual a ordem d grandeza com que queres trabalhar só sei que é grande porque foi o q postas te.
O numero que deste como exemplo cabe muito bem num double sem sombra para duvidas.
atenção que se tiveres por exemplo um int a receber um double esquece.
Desculpa nao poder ajudar.
Cumprimentos
De pé mas...Cansado!!!
-
LMX
- Membro de Ouro

-
- Mensagens: 786
- Registado: Quarta Out 20, 2004 21:16
- Localização: Lisboa
Voltar para Programação
Quem está ligado:
Utilizador a ver este Fórum: Nenhum utilizador registado e 1 visitante