Uso de tipo de datos decimal en hoja de cálculo de Excel

0

Estoy buscando una manera de usar el tipo de datos Decimal en una hoja de cálculo de Excel. Estoy almacenando información de enrutamiento como un número. Las rutas podrían consistir en 10 movimientos a 50 ubicaciones diferentes. Esto funciona bien en VBA usando el tipo de datos decimales, pero no puedo hacer que Excel acepte estos números una vez que se pasa de VBA.

Parece que el tipo de datos predeterminado es Doble, que no tiene suficiente precisión para mi aplicación. Además, una representación de cadena de un número no será suficiente ya que me estoy retirando del número en la hoja de trabajo.


Esto es lo que tengo hasta ahora para generar la Ruta #:

'generate route# for each row
For i = intFirstRow To intLastRow
    'initiate route#
    decRoute = CDec(dblInitialRoute)
    For j = 1 To 7
        'only assign if labor
        If arrLabor(i, j, 1) <> 0 And arrLabor(i, j, 1) <> "" Then
            'some stations could lead to multiple machines
            If arrLabor(i, j, 2) = 1 Then
                sglRandom = Rnd()
                If sglRandom < 0.8 Then
                    intValue = 1
                Else
                    intValue = 3
                End If
                decRoute = decRoute + intValue * (50 ^ ((decRoute - Int(decRoute)) * 100)) - 0.01
            ElseIf arrLabor(i, j, 2) = 10 Then
                sglRandom = Rnd()
                intValue = Int((sglRandom * 1000) / (1000 / 20)) + 10
                Debug.Print intValue
                decRoute = decRoute + intValue * (50 ^ ((decRoute - Int(decRoute)) * 100)) - 0.01
            Else
                intValue = arrLabor(i, j, 2)
                decRoute = decRoute + intValue * (50 ^ ((decRoute - Int(decRoute)) * 100)) - 0.01
            End If
        End If
        'exception
        If arrLabor(i, j, 1) = "" And j = 2 Then
            intValue = 44
            decRoute = decRoute + intValue * (50 ^ ((decRoute - Int(decRoute)) * 100)) - 0.01
        End If
    Next
    'write route#
    Debug.Print CDec(Int(decRoute) + dblInitialRoute)
    wsActive.Cells(i, intRouteCol).Value = CDec(Int(decRoute) + dblInitialRoute)
Next
Simulador de perspicacia
fuente
¿Qué versión de Excel? Además, ¿qué pasa con el uso del tipo de datos Doble?
user2676140
Excel 2013 ... Double está completando algunos de mis números.
Acumen Simulator
Hmm eso es interesante. El propósito de un doble es "Usar el tipo de datos Doble para almacenar números de coma flotante de precisión" Pruebe decimal o moneda quepublishing.com/articles/article.aspx?p=339929&seqNum=2
user2676140
Mi problema es que la hoja de trabajo de Excel no acepta valores pasados ​​como decimales
Acumen Simulator
¿Cuáles son los tipos de sus variables?
Raystafarian

Respuestas:

0

El tipo numérico de celda es un punto flotante de doble precisión capaz de contener hasta 15 dígitos de precisión.

Excel almacena los números de manera diferente a la que puede mostrar en la hoja de trabajo. En circunstancias normales, Excel almacena valores numéricos como números de "punto flotante de precisión doble" o "dobles" para abreviar. Estas son variables de 8 bytes que pueden almacenar números con una precisión de aproximadamente 15 decimales. Es posible que solo se muestren dos decimales en la hoja de trabajo, pero el valor subyacente tiene los 15 decimales completos.

El segundo problema surge del hecho de que una computadora, cualquier computadora, no puede almacenar la mayoría de los números fraccionarios con total precisión. Las computadoras, en general, usan el estándar IEEE (Instituto de Ingenieros Eléctricos y Electrónicos) para números de coma flotante. Este estándar proporciona una forma de almacenar números fraccionarios en el espacio limitado de un número de 8 bytes. Por supuesto, para la mayoría de los números, se debe hacer una aproximación.

Redondeo y precisión en Excel - CPearson

Parece que está tratando de mantener una mayor precisión de lo que está diseñado. Puede almacenar más dígitos haciendo que el número sea más grande, digamos un factor de 1x10 ^ 15. Almacenará la información adicional para usted, pero es posible que no funcione con la máquina que tiene.

wbeard52
fuente
¿Parece que Excel no aceptará el tipo de datos Decimal que mantiene la precisión a 28 dígitos?
Acumen Simulator