Pour intention lisibilité et révélateur, j'aller avec A:
Dim mySingle as Single = CSng(a/b) ' CSng
A l'aide, vous êtes clairement dire, je sais que le calcul retourne un type différent et c'est ce que je veux. En ce qui concerne les performances - j'ai effectué un micro-test rapide de test 1 million d'itérations pour chacun et la différence était de la milliseconde à la sous-milliseconde, avec un très léger avantage à CSing
. Ne vous inquiétez pas des performances pour ce type de conversions (bien sûr, vous devez tester cela par vous-même).
Code de référence:
Sub Main()
Dim mySingle As Single
Dim a As Integer = 10
Dim b As Integer = 5
Dim iterations As Integer = 1000000
Dim sw As New Stopwatch()
sw.Start()
For i As Integer = 1 To iterations
mySingle = CSng(a/b) ' CSng '
Next
sw.Stop()
Console.WriteLine(String.Format("CSng(a/b) - {0}", sw.Elapsed))
sw.Reset()
sw.Start()
For i As Integer = 1 To iterations
mySingle = a * 1.0F/b ' x 1F '
Next
sw.Stop()
Console.WriteLine(String.Format(" a * 1.0F/b - {0}", sw.Elapsed))
End Sub
Solution A peut vous jeter hors tension si vous passez jamais à C# (parce que dans C#, 'int/int' retourne un' int') – Powerlord