Estoy usando d3.format ("s") con d3.svg.axis.tickFormat para formatear muy bien las etiquetas de tics con unidades SI (del Sistema Internacional de Unidades). Funciona muy bien en su mayor parte, a excepción de ciertos valores que se ejecutan en un error de redondeo y devuelve una tonelada de decimales (1400, por ejemplo, como 1400 * 0.001 = 1.4000000000000001).Precisión de la variable en d3.format
Para evitar esto puedo especificar una precisión, como d3.format (".2s") pero esto fuerza 2 dígitos significativos en los casos en que 1 sería mejor. Por ejemplo, si tengo ticks [5000, 10000, 15000], ahora vería [5.0k, 10k, 15k]. Originalmente, cuando no especificaba la precisión, obtuve [5k, 10k, 15k].
Me pregunto si es posible especificar una precisión máxima de modo que solo se aplique cuando el número de dígitos significantes excede el número especificado. Entonces 5000 serían 5k y no 5.0k.
Gracias por la respuesta. Lamentablemente, estoy usando el helper d3.svg.axis para que los valores que estoy formateando sean valores de tilde, no valores de datos. El formateo se realiza internamente a medida que se generan las etiquetas tic. Podría envolver la función devuelta desde d3.format en mi propia función para interceptar los valores, pero volver a analizar la cadena devuelta desde el formateador SI no parece demasiado limpia. Me preguntaba si podría haber algo incorporado en el formateador para soportar esto sin codificarlo yo mismo. –
Ahh bien. Mi código es para las etiquetas de datos, no para las etiquetas. Espero no haberlo guiado por el camino equivocado. ¿Podría hacer algo similar, pero con las funciones de etiquetado de ticks (es decir, pasarles una función anónima)? – tatlar