 <p>There's an example in the documentation that uses a <code>ko.pureComputed</code> layer on top of the "real" number value:</p> <pre><code>this.price = ko.observable(25.99); this.formattedPrice = ko.pureComputed({ read: function () { return '$' + this.price().toFixed(2); }, write: function (value) { // Strip out unwanted characters, parse as float, then write the // raw data back to the underlying "price" observable value = parseFloat(value.replace(/[^\.\d]/g, "")); this.price(isNaN(value) ? 0 : value); // Write to underlying storage }, owner: this }); </code></pre> <p>Source: <a href="http://knockoutjs.com/documentation/computed-writable.html" rel="nofollow">http://knockoutjs.com/documentation/computed-writable.html</a></p> <p>This allows you to use the <code>formattedPrice</code> in your data-bind, and you can even write to it. <code>price</code> will remain a number. You'll need an extra property in your viewmodel for each number though...</p> <p>If it's only a one-way bind you're after, you could also create a <code>currencyFormatter</code> bind that extends the <code>text</code> binding:</p> <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code"> <pre class="snippet-code-js lang-js prettyprint-override"><code>var formatCurrency = function(value) { value = parseFloat(("" + value).replace(/[^\.\d]/g, "")); return "$" + (isNaN(value) ? 0 : value); } ko.bindingHandlers.currencyText = { update: function(element, valueAccessor) { var originalValue = ko.unwrap(valueAccessor()); var formatValue = formatCurrency.bind(null, originalValue); ko.bindingHandlers.text.update.call(null, element, formatValue); } }; ko.applyBindings({ source: ko.observable(1) })</code></pre> <pre class="snippet-code-html lang-html prettyprint-override"><code>&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"&gt;&lt;/script&gt; &lt;input type="number" step="0.1" data-bind="value: source"&gt; &lt;h1 data-bind="currencyText: source"&gt;&lt;/h1&gt;</code></pre> </div> </div> </p>