Как в ClojureScript отобразить число с двумя десятичными знаками?

Я пробовал использовать with-precision, но это не сработало:

(.log js/console (with-precision 2 1.2345)) 

Итак, я использовал toFixed:

(.log js/console (.toFixed 1.2345 2)) 

Но я чувствую, что это не идиоматический способ сделать это.

Кроме того, я не понимаю, почему with-precision не работает.

Пожалуйста, вдохновите меня ...


person viebel    schedule 04.02.2014    source источник
comment
в cljs нет точности   -  person edbond    schedule 04.02.2014
comment
@edbond, как мне узнать, какие части clojure доступны в cljs?   -  person viebel    schedule 04.02.2014
comment
некоторая информация здесь - github.com/clojure/clojurescript/wiki/Differences-from- Clojure Также обратите внимание на предупреждения: WARNING: Use of undeclared Var some-namespace/with-precision at line 430   -  person edbond    schedule 04.02.2014


Ответы (3)


(ns foo.bar
  (:require [cljs.pprint :as pprint]))

(pprint/cl-format nil  "~,2f" 1.2345) ; => returns "1.23"
(pprint/cl-format true "~,2f" 1.2345) ; => prints "1.23", returns nil

Тот же код можно использовать в Clojure, если поменять местами cljs.pprint на clojure.pprint.

person alesguzik    schedule 13.12.2015

(defn round-number 
   [f]
   (/ (.round js/Math (* 100 f)) 100))

Если вы хотите сохранить его как числовой тип (на основе ответа javascript )

person Michel A.    schedule 28.02.2019

person    schedule
comment
Интересно, что Google Closure прямо говорит использовать .toFixed в простом случаи! - person Jeremy Field; 04.11.2020
comment
Да, я думаю, что .toFixed лучше для этого примера. Правильный ответ, кажется, вы все делаете правильно :) - person Timothy Pratley; 04.11.2020