2010-01-19 5 views
0
Dim x As Integer = 1.8 \ 1 

Erreur:L'opérateur '' ne supporte pas les flottants?

Option Strict On disallows implicit conversions from 'Double' to 'Long'

Qu'est-ce ?? long

EDIT:

Apparemment, les tentatives Visual Basic pour convertir une expression numérique en virgule flottante à Long. OK, cette partie est claire.

Maintenant, je peux utiliser le

CType((Math.Round(myResultingSingle)), Integer) 

mais pour quoi MSDN tells cet opérateur \ prend en charge tous les types si, en réalité, il ne supporte que Long comme expression1! ...

+0

Quelle est votre résultat attendu? Notez également qu'une conversion utilise normalement l'arrondi du banquier (si Option Strict est désactivé). –

+0

@divo: x devrait être 2 ... ou 1 .. enfin, je voudrais éliminer l'erreur, puis voir le résultat (par défaut). – serhio

Répondre

2

L'opérateur de division entière nécessite opérandes entiers. Deux façons de le faire:

  • Dim x As Integer = CInt (1.8) \ 2
  • Dim x As Integer = CInt (1,8/2)
+0

Ainsi, seuls les opérandes entiers sont supportés par \, pas tous (y compris le virgule flottante), comme le prétend MSDN – serhio

+2

@serhio: Comme l'a souligné Grzegorz Gierlik, vous pouvez utiliser un nombre à virgule flottante uniquement avec Option Strict Off. sur MSDN. –

2

De the MSDN page \ Operator (Visual Basic) :

Before performing the division, Visual Basic attempts to convert any floating-point numeric expression to Long

queLong. Parce que Double à Long est une conversion de plus en plus étroite, et Option Strict est activée, vous devez explicitement demander qu'il se produise.

+0

depuis la même page MSDN: 'Types pris en charge: Tous les types numériques, y compris les types unsigned et floating-point et Decimal. 'En réalité, seul Long est supporté comme * expression1 * .. :( – serhio

+0

@serhio: Se pourrait-il que vous cherchiez plutôt l'opérateur'/'? –

+0

@divo: comme vous pouvez le voir, x est un entier, donc J'ai besoin d'une division entière x = 1 ou 2 ... mdeas ... – serhio

2
Here

(en section Remarques) est la réponse:

Before performing the division, Visual Basic attempts to convert any floating-point numeric expression to Long. If Option Strict is On, a compiler error occurs.

+0

Visual Basic tente de convertir n'importe quelle expression numérique en virgule flottante à Long ... Alors que dois-je faire? MSDN indique également que tous les types sont pris en charge, mais en réalité est 'Long' que seulement?!. – serhio

+0

Vous devez convertir le double en type entier Voir @nobugz answer: http://stackoverflow.com/questions/2093067/operator-does-not-support-floats/2093386# 2093386 –

Questions connexes