2010-09-12 14 views
6

En JavaScript es válida para poner fin a un número entero y con un punto, al igual que ...¿Por qué un literal entero seguido de un punto es un literal numérico válido en JavaScript?

x = 5.; 

Cuál es el punto de tener esta notación? ¿Hay alguna razón para poner el punto al final, y si no, por qué se permite esa notación en primer lugar?

Actualización: Bueno, chicos, ya que mencionas flotantes y enteros ... Estamos hablando de JavaScript aquí. Solo hay un tipo de número en JavaScript que es IEEE-754.

5 y 5. tienen el mismo valor, no hay diferencia entre esos dos valores.

+0

Lo que es más interesante para mí es que javascript permite '05' y' 5.' pero no '05'. – user113716

+2

Eso es porque el prefijo '0' lo convierte en un número octal, ¿cómo expresarías un flotante octal? ;) –

+0

@Ivo - Ah, de hecho lo hace. '09. Funciona. ¡Gracias! : o) – user113716

Respuesta

2

sí es necesario el punto decimal si se llama a un métodoen un entero:

5.toFixed(n) // throws an error 

5..toFixed(n) // returns the string '5.' followed by n zeroes 

Si eso no se ve bien, (5).toFixed(n), o 5.0.toFixed(n), trabajará, también.

-1

¿Qué pasaría si no fuera un número entero, sino un literal de punto flotante?

1

Ese es un número de coma flotante. A diferencia de cualquier otro idioma que he encontrado, todos los números en Javascript son en realidad números flotantes de 64 bits. Técnicamente, no hay enteros nativos en Javascript. Ver The Complete Javascript Number Reference para la historia fea completa.

+0

¿Le importaría al infractor comentar? – Asaph

+0

Claro (lo siento, no lo había notado antes): * No creo que estés respondiendo la pregunta de OP (es decir, sobre el análisis y las anotaciones, no el tamaño) * Los números de Javascript son considerados confiables hasta un límite, which significa que no necesita tratarlos como puntos flotantes habituales (es decir, puede hacer 10.0/2 == 5, lo que no debería hacer con los puntos flotantes normales) – Eric

2

La respuesta correcta en este caso es que no hace absolutamente ninguna diferencia.

Cada número en JavaScript ya es un número de coma flotante de 64 bits.

El ". syntax" sólo es útil en los casos en que puede ommit la parte fija porque es 0:

.2 // Will end up as 0.2 
-.5 // Will end up as -0.5 

Así que en general es sólo el ahorro de un byte, pero hace que el código sea menos legible al mismo tiempo, .

+0

Tendría sentido que valores no enteros (valores con fracciones decimales) tienen el punto (obviamente) y los valores enteros no. entonces, o bien es solo un número entero como 5 o es un número real como 5.01 ... pero ¿por qué 5. está permitido? Si el punto en este caso no hace una diferencia, esta notación es inútil. ¿Por qué deberían habilitar esta notación entonces? –

4

Supongo que es solo la compatibilidad con otros lenguajes tipo C donde el punto sí importa.

+0

Llamaría a ese legado ... Pero sí, esa es probablemente la razón. Supongo que el creador de JavaScript simplemente copió la notación de C, pero luego decidió definir solo un tipo de número (y luego no pensó en volver a visitar la notación). –

Cuestiones relacionadas