Design: Tipo decimal/dinero

Creado en 6 ago. 2017  ·  3Comentarios  ·  Fuente: WebAssembly/design

Hay muchos buenos documentos WASM sobre el tipo flotante y su aritmética con la parte fraccionaria (basada en 2) ^ (-1).

Durante años, los programadores han estado utilizando soluciones alternativas en JavaScript para lograr un cálculo correcto de fracciones decimales debido al único tipo flotante de 64 bits para todos los números.
¿Existe un plan para admitir el tipo __Money__ o el tipo __Decimal__ ( Ejemplo 1 , Ejemplo 2 )?

El tipo prácticamente decimal es importante para la mayoría de las aplicaciones comerciales. Muchos lenguajes, plataformas y bases de datos lo soportan.

Comentario más útil

No creo que el OP esté solicitando soporte para BCD, sino soporte para punto flotante decimal . Aparte de eso, estoy de acuerdo con @jfbastien , debemos tener cuidado al admitir algo que no está disponible con frecuencia en el hardware. Según la página de Wikipedia que cité, hasta ahora solo el hardware de IBM lo implementa. ISTR hubo rumores de que Intel lo perseguía, pero nada parece haberse materializado.

Intel parece ofrecer una biblioteca de emulación que se afirma que es portátil, por lo que, presumiblemente, C podría compilarse en Wasm. No he investigado eso en absoluto, ni siquiera para verificar que mi suposición sea correcta.

Todos 3 comentarios

WebAssembly expone características de hardware comunes cuando estas características hacen que los casos de uso sean más rápidos. En general, no expone nada más: se espera que se construyan funciones útiles utilizando estas primitivas.

Por lo tanto, evaluaríamos el decimal codificado en binario de la siguiente manera:

  • ¿Está ampliamente disponible en las ISA modernas? No. Estaba en x86 anterior y no está disponible en modo largo.
  • ¿Es más rápido? Se podría argumentar que, a veces, tener la intención expresada (p. ej., "realizar una adición BCD") puede conducir a un mejor código porque, de lo contrario, la intención se pierde y el compilador no puede recuperarla. Ese no es claramente el caso aquí, pero estoy dispuesto a que me convenzan de lo contrario.

Tenga en cuenta que la utilidad de una característica simplemente no es relevante para esto. Si es útil, se puede construir una biblioteca (o mejor, se puede compilar una base de código C++ en WebAssembly). La utilidad y la presencia de un campeón para la función solo influyen en cuándo llegaremos a ella.

No creo que el OP esté solicitando soporte para BCD, sino soporte para punto flotante decimal . Aparte de eso, estoy de acuerdo con @jfbastien , debemos tener cuidado al admitir algo que no está disponible con frecuencia en el hardware. Según la página de Wikipedia que cité, hasta ahora solo el hardware de IBM lo implementa. ISTR hubo rumores de que Intel lo perseguía, pero nada parece haberse materializado.

Intel parece ofrecer una biblioteca de emulación que se afirma que es portátil, por lo que, presumiblemente, C podría compilarse en Wasm. No he investigado eso en absoluto, ni siquiera para verificar que mi suposición sea correcta.

Gracias @jfbastien y @lars-t-hansen por las respuestas.

Ahora está claro que este problema no está relacionado con WASM y debe dirigirse a otro grupo.

Una biblioteca puede resolver este problema.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

JimmyVV picture JimmyVV  ·  4Comentarios

ghost picture ghost  ·  7Comentarios

spidoche picture spidoche  ·  4Comentarios

artem-v-shamsutdinov picture artem-v-shamsutdinov  ·  6Comentarios

beriberikix picture beriberikix  ·  7Comentarios