Werner,

As you say, would be good in the core, but almost as good is a simple macro.

See attached and import to any wiki, then open $:/PSaT/format-numbers 
<https://tiddlywiki.com/#%24%3A%2FPSaT%2Fformat-numbers> For instructions

Syntax
<<format-number n [t] [d] [p]>>

   - *n* is the number with or without decimal places (no default)*t* is 
   the thousands separator (optional) - defaults to ","
      - (Can change default in format-number macro, set thousands-separator)
   - *d* is the decimal separator (optional) - defaults to "."
   - (Can change default in format-number macro, set decimal-separator)
   - *p* is the decimal places to use (optional) - defaults to "2"
   - (Can change default in format-number macro, set decimal-places)
   
For example <<format-number 1234567654321.6666>> results in 1, <#%2C>234, 
<#%2C>567, <#%2C>654, <#%2C>321.67 
 
*$:/PSaT/format-numbers/macro*
\define format-number(n t d p)
<$set name=thousands-separator value="$t$" emptyValue=",">
<$set name=decimal-separator value="$d$" emptyValue=".">
<$set name=decimal-places value="$p$" emptyValue="2">
<$set name=fixed-decimal value={{{ [[$n$]fixed<decimal-places>] }}}>
<$set name=integer value={{{ [<fixed-decimal>split[.]first[]] }}}>
<$set name=remainder value={{{ [<fixed-decimal>split[.]last[]] }}}>
<$set name=length filter="[<integer>length[]]">
<$macrocall $name=each-digit length=<<length>> /><$list 
filter="[<decimal-places>!match[0]]" 
variable=nul><<decimal-separator>><<remainder>></$list>
</$set></$set></$set></$set></$set></$set></$set>
\end
\define each-digit(length)
\whitespace trim
<$list filter="[range[1,$length$]]" variable=position>
<$set name=digit filter="[[$(integer)$]split[]nth<position>]">
<$set name=zeros filter="[[$length$]subtract<position>]">
<<digit>>{{{ 
[<zeros>!match[0]remainder[3]match[0]then<thousands-separator>] }}}
</$set></$set>
</$list>
\end

*Regards*
*Tones*
On Friday, 18 September 2020 at 23:20:14 UTC+10 Werner wrote:

> Tony, 
>
> sorry, was absorbed by other projects, so couldn't reply earlier. OK, I'll 
> be a bit more specific:
>
> I have a number stored in a JSON tiddler. When I retrieve it, I get plain 
> old 3500 for example. But I want decimal points and comma separators to 
> have it rendered like 3,500. Or 3.500 in German. Or whatever is your 
> default locale. And, if DateFormat is included in the view widget, I think 
> NumberFormat should also be. So I think, the most elegant solution would be 
> extending the view widget source code to allow for "number" and pass it 
> through to JavaScript intl.Numberformat (cf.: 
> https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat).
>  
> Should not be that hard to implement. Maybe I try it, if I find the time.
>
> Of course there are plugins, but I think something as basic as a number 
> format should be in the core.
>
> Werner
>
> TW Tones schrieb am Dienstag, 8. September 2020 um 02:32:41 UTC+2:
>
>> Post script
>>
>> Actualy i think using simple templates to display a number in a desired 
>> format would be smart and the template can be changed to suit localisation 
>> if not automaticaly respond to localisation. Macro access to templates is 
>> also easy to provide.
>>
>> Tones
>>
>> On Tuesday, 8 September 2020 at 10:25:30 UTC+10 TW Tones wrote:
>>
>>> Werner
>>>
>>> Perhaps some examples?
>>>
>>> Evans formulae plugin has features to support this from memory. There 
>>> are other maths plugins that may.
>>>
>>> I can imagin a gap that exists between basic maths and the more advanced 
>>> maths especialy in relation to display.
>>>
>>> However i can see these gaps would be easy to solve with a few wiki text 
>>> macros or taping into javascript functions that already handle it.
>>>
>>> Please research your percived gaps and post back some details.
>>>
>>> Tones
>>>
>>> On Tuesday, 8 September 2020 at 02:09:26 UTC+10 Werner wrote:
>>>
>>>> Guys,
>>>>
>>>> am I right that there is no TW-inherent way to display a number format 
>>>> or, better, locale-specific number format?
>>>>
>>>> Wouldn't it be great if it was integral part of the <$view> widget, 
>>>> much like date format is?
>>>>
>>>> Is there an easy fix? I mean, without having to install another plugin 
>>>> just for this purpose.
>>>>
>>>> Thanks, Werner
>>>>
>>>

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to tiddlywiki+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/0b67c66b-8730-4618-9775-ff4767aa9468n%40googlegroups.com.

Reply via email to