Skip to content
Extraits de code Groupes Projets

Ajout de la fonction chiffresSignificatifs. Modification de la fonction...

Fusionnées Thibault Giauffret requested to merge chiffres_significatifs-thib into main
1 fichier
+ 34
9
Comparer les modifications
  • Côte à côte
  • En ligne
import Decimal from 'decimal.js'
/**
* Renvoie l'écriture scientifique d'un nombre sous la forme aeb
* ecritureScientifique
* Renvoie l'écriture scientifique d'un nombre
* @param a Nombre à convertir
* @param b Nombre de significatifs
* @Example
* // 1.23e-4 devient 1.23\\times 10^{-4}
* // 1.23e4 devient 1.23\\times 10^{4}
* ecritureScientifique(0.1234) renvoie 1.23\\times 10^{-1}
* ecritureScientifique(1.23e-4) renvoie 1.23\\times 10^{-4}
* ecritureScientifique(1.23e4) renvoie 1.23\\times 10^{4}
* @author Thibault Giauffret
*/
export function ecritureScientifique (a: number | Decimal, b: number = 0) {
export function ecritureScientifique (a: number | Decimal, b: number = 0, latex: boolean = true): string {
if (typeof a === 'string') {
window.notify('ecritureScientifique() n\'accepte pas les string.', { argument: a })
window.notify('ecritureScientifique() n\'accepte pas les chaînes de caractère.', { argument: a })
a = Number(a)
}
if (a instanceof Decimal) {
const [mantisse, exposant] = a.toExponential().split('e')
let newMantisse = parseFloat(mantisse)
if (b !== 0) {
newMantisse = Math.round(newMantisse * 10 ** b) / 10 ** b
newMantisse = Math.round(newMantisse * 10 ** (b - 1)) / 10 ** (b - 1)
}
if (latex) {
return `${newMantisse}\\times 10^{${exposant}}`
} else {
return `${newMantisse}e${exposant}`
}
return `${newMantisse}\\times 10^{${exposant}}`
} else if (typeof a === 'number') {
const [mantisse, exposant] = a.toExponential().split('e')
let newMantisse = parseFloat(mantisse)
if (b !== 0) {
newMantisse = Math.round(newMantisse * 10 ** b) / 10 ** b
newMantisse = Math.round(newMantisse * 10 ** (b - 1)) / 10 ** (b - 1)
}
if (latex) {
return `${newMantisse}\\times 10^{${exposant}}`
} else {
return `${newMantisse}e${exposant}`
}
return `${newMantisse}\\times 10^{${exposant}}`
} else {
window.notify('ecritureScientifique : type de valeur non prise en compte', { a })
return ''
}
}
/**
* chiffresSignificatifs
* Renvoie une valeur avec le nombre de chiffres significatifs souhaité
* @Example
* chiffresSignificatifs(0.1234,2) devient 0.12
* @author Thibault Giauffret
*/
export function chiffresSignificatifs (value: number, cs: number) {
return new Decimal(ecritureScientifique(value, cs, false))
}
Chargement en cours