Sabemos que la solidez no admite los valores flotantes. Pero aquí ( https://www.ethereum.org/token#understanding-the-code ) aceptan un parámetro de entrada 'lugares decimales' para fines de cálculo. ¿Cómo se ha ejecutado esta acción cuando se crea este token usando el contrato escrito usando solidez?
Lo que realmente está sucediendo en los contratos de fichas subdivisibles (y en ETH en sí) es que la unidad real es pequeña. Muy, muy pequeño. Un solo éter es en realidad solo 10 ^ 18 wei. Por el bien de los usuarios, se muestra en las distintas interfaces como un número decimal de ETH.
El mismo principio se aplica en los contratos simbólicos. Internamente, es solo una unidad estándar que contiene números gigantescos, pero cuando se muestra, la interfaz lo convierte en un número pequeño y legible por humanos.
Esto es para que el token se pueda dividir en casi cualquier cantidad, y si de repente necesita dividirse aún más , todo lo que se necesita es ajustar la interfaz para manejarlo.
Aquí hay algunos ejemplos de la respuesta de @Matthew.
Si hay un token con decimals = 2
, el usuario debe tener un balanceOf
100 para ver 1,00 en las interfaces de usuario (como Mist o Ethereum Wallet). Si el usuario balanceOf
es solo 1, en la interfaz de usuario verá 0.01.
En cuanto al código, establecer decimals
16 es una manera fácil de asignar 100 tokens por cada 1 ETH. Cuando un contrato recibe 1 ETH (que es msg.value
de 10 ^ 18) y asigna tokens a un usuario, el del usuario balanceOf
sería 10 ^ 18, pero se mostrarían 100 (10 ^ 18 / 10 ^ 16).
Aniket
ética
balanceOf
15*10^18;decimals
será 19. La interfaz de usuario mostrará el número correcto de 1,5 (de 15*10^18/10^19) tokens para el usuario. Recuerde, los contratos tienen un número gigantesco como mencionó @Matthew.