Hola a todos.
Estoy escribiendo un sencillo programa el cual lo único que tiene que hacer es sumar el numero 0.000000000000001, un numero dado de veces.
Al decirle que realice ciclos con valores pequeños, el programa funciona bien, por ejemplo que sume el numero antes dado, 5000 veces, el resultado es 0.000000000005000 correcto! Pero al darle el numero 50000 el resultado es 0.000000000049973
Al probar el mimo codigo en un computador de escritorio se presenta el mismo error
Este es el código B4A que da el error mencionado:
También adjunto el proyecto completo en .Zip (Prueba 1.zip)
Este es el código B4J que en un computador de escritorio presenta el mismo error
Adjunto también el proyecto completo en B4J (Proyecto en B4J.zip)
Estoy escribiendo un sencillo programa el cual lo único que tiene que hacer es sumar el numero 0.000000000000001, un numero dado de veces.
Al decirle que realice ciclos con valores pequeños, el programa funciona bien, por ejemplo que sume el numero antes dado, 5000 veces, el resultado es 0.000000000005000 correcto! Pero al darle el numero 50000 el resultado es 0.000000000049973
Al probar el mimo codigo en un computador de escritorio se presenta el mismo error
Este es el código B4A que da el error mencionado:
B4X:
Sub Test
Try
ButtonRun.Enabled = False
Dim Inicio, Final As Long
Dim Ciclos As Int
Ciclos = EditText1.Text
Dim Total As Float
Total = 0
Inicio = DateTime.Now
Do While Ciclos > 0
Ciclos = Ciclos - 1
Total = Total + 0.000000000000001
Loop
Final = DateTime.Now
LabelCalculos.Text = NumberFormat2(Total, 1, 15, 15, False)
LabelTiempo.Text = Final - Inicio
ButtonRun.Enabled = True
Catch
Log(LastException)
End Try
End Sub
También adjunto el proyecto completo en .Zip (Prueba 1.zip)
Este es el código B4J que en un computador de escritorio presenta el mismo error
B4X:
#Region Project Attributes
#MainFormWidth: 600
#MainFormHeight: 600
#End Region
Sub Process_Globals
Private fx As JFX
Private MainForm As Form
Private TextFieldNombre As TextField
Private ButtonSaludar As Button
Private LabelMuestraSaludo As Label
End Sub
Sub AppStart (Form1 As Form, Args() As String)
MainForm = Form1
MainForm.RootPane.LoadLayout("Layout1") 'Load the layout file.
MainForm.WindowHeight= 150
MainForm.WindowWidth = 475 'Ancho
MainForm.Show
LabelMuestraSaludo.Text = ""
End Sub
'Return true to allow the default exceptions handler to handle the uncaught exception.
Sub Application_Error (Error As Exception, StackTrace As String) As Boolean
Return True
End Sub
Sub ButtonSaludar_Click
Calcular (TextFieldNombre.Text)
End Sub
Sub Calcular (Ciclos As Int)
Dim Total As Float
Total = 0
Do While Ciclos > 0
Ciclos = Ciclos - 1
Total = Total + 0.000000000000001
Loop
fx.Msgbox(MainForm, NumberFormat(Total, 1, 15), "Resultado")
End Sub
Adjunto también el proyecto completo en B4J (Proyecto en B4J.zip)
Attachments
Last edited: