Discusiones sobre Productos NI

cancelar
Mostrando los resultados de 
Buscar en lugar de 
Quiere decir: 

tengo problema con redondeo en control numerico

¡Resuelto!
Ir a solución

el problema es este , hoy mi profesor nos puso este vi de examen muy facil convertidor de centigrados a fahrenheit y kelvin , con un indicador booleano el cual enciende cuando llega a los 100°c o mas , el problema fue cuando el profesor puso el valor en centigrados 99.99999999999999999999999999999999999 muchos nueves como 50 , este valor automaticamente se redondeo a 100 y no se encencio el  indicador boleano que con el highlight execution se veia claramente como llegaba el valor 100 al comparador y marcaba false , mi pregunta es por que pasa esto ? y como lo soluciono 

0 kudos
Mensaje 1 de 3
5.139 Vistas
Solución
Aceptado por el autor del tema wiko93

Hola.

Cuando se trabaja en punto flotante, hay una precision que depende del tipo numerico  y de la plataforma. No importa que escribas 50 decimales, el valor sera truncado a la precisión que corresponda.
El control ºC es un EXT que tiene unos 19 digitos de precision.
El indicador es un DBL que tiene unos 16 digitos de precision.
En las propiedades de cada control/indicador, puedes seleccionar la cantidad de digitos de precision que quieres tener  El valor sera truncado/redondeado a 16 digitos de precision como maximo a efectos de presentacion solamente.

Internamente, el valor EXT se mantiene en 99.9999999999999999 por lo que la comparacion es buena ya que este valor es menor que 100.


Para "arreglar" esto debes decidir cuantos digitos de precision quieres usar y aplicar alguno de los metodos descritos en
https://decibel.ni.com/content/docs/DOC-8632 para pasar el valor deseado.


Saludos.
Alipio.

---------------------------------------------------------
"Qod natura non dat, Salmantica non praestat"
---------------------------------------------------------
0 kudos
Mensaje 2 de 3
5.129 Vistas

Hola wiko93.

 

Complementando lo que dice alipio, para poder ver el numero que ingresas sin que se redondee en control numérico, tienes que cambiar, en las configuraciones del control (y si lo necesitas también en la de los indicadores) la parte del "Precision Type" en el tab de "Display Format" por la opción de "Digits of Precision" en lugar de "Significant digits" como lo tienes.

 

cambio.png

 

Toma en cuenta lo que dice alipio, si el numero que ingresas tiene una mayor cantidad de dígitos que el que soporta el tipo de dato, este lo cortará y aplicará el redondeo, pero hasta el ultimo dígito, sin modificar los anteriores (a menos que tu lo delimites).

 

repres.png

 

Saludos.

0 kudos
Mensaje 3 de 3
5.108 Vistas