精华内容
下载资源
问答
  • 我知道理论大整数数字可以按千个分组,以提高可读性:Python 3.5.2 (default, Nov 17 2016, 17:05:23)[GCC 5.4.0 20160609] on linuxType "help", "copyright", "credits" or "license" for more information.&...

    我知道理论上大整数的数字可以按数千个分组,以提高可读性:

    Python 3.5.2 (default, Nov 17 2016, 17:05:23)

    [GCC 5.4.0 20160609] on linux

    Type "help", "copyright", "credits" or "license" for more information.

    >>> import locale

    >>> locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')

    'en_US.UTF-8'

    >>> locale.format('%d', 1234567890, grouping=True)

    '1,234,567,890'

    >>> "{:n}".format(1234567890)

    '1,234,567,890'

    但是,令人惊讶的是,这不适用于每个语言环境:

    >>> locale.setlocale(locale.LC_ALL, 'pl_PL.UTF-8')

    'pl_PL.UTF-8'

    >>> locale.format('%d', 1234567890, grouping=True)

    '1234567890'

    >>> "{:n}".format(1234567890)

    '1234567890'

    为什么数字没有格式化?我觉得这很奇怪.我希望打印出类似于1 234 567 890的东西.

    根据Format Specification Mini-Language,我们可以明确地强制执行两个可能的分隔符:逗号和下划线_.可悲的是,逗号不适合波兰语,因为它在那里被用作小数点分隔符,而像1_234_567_890这样的数字对于大多数人来说看起来很奇怪.

    我们能否以某种方式强制使用不间断的空间作为千位分隔符?

    解决方法:

    pl_PL语言环境千位分隔符似乎是empty.我不知道这是否准确地表示波兰的常见用法,但Python正确地根据pl_PL语言环境的规则格式化您的数字.这可能是区域设置文件中的错误.

    据我所知,没有选项可以手动指定千位分隔符和十进制标记字符.

    标签:python,integer,formatting,locale

    来源: https://codeday.me/bug/20190701/1350697.html

    展开全文
  • 一、移动端大数值会默认当作电话号码在手机等移动设备,对于超过一定个数的数值,系统默认会当做电话号码处理,而不是一个数字按照中文用户使用习惯,有时候个很多连续数字其实真就是一个数字,自动变成...
    点击上方“蓝字”,发现更多精彩。

    一、移动端大数值会默认当作电话号码

    在手机等移动设备上,对于超过一定个数的数值,系统默认会当做电话号码处理,而不是一个数字

    按照中文用户的使用习惯,有时候个数很多的连续数字其实真的就是一个数字,自动变成手机号码其实并不是我们想要的,尤其自动高亮的颜色我们使用CSS是无法重置的,所以我们总会想方设法干掉移动端数值变电话号码这一特性。

    通常的做法都是使用标签:

    <meta name="format-detection" content="telephone=no">

    而且根据我的观察,只要是做移动端网页开发的,上面这段代码都会有的,而且很少看到有人对这种用法会有质疑,或者深入思考这样到底对不对?

    实际上,在我看来,format-detection类型的使用本身就是一种牺牲特定用户体验为原本错误决策补坑的权宜之计,但却成为了标配代码,多少有点戏虐的味道在里面。

    我仔细思考了一下,之所以会出现这种现象,主要在于我们的开发人员对于千位分隔符(逗号)数值表示法些许不适应以及理解不够深刻。

    二、大数值千位分隔符(逗号)的作用

    在西方,在表示很大的数字的时候,会以每3位为一个间隔进行分隔,分隔的符号就是英文逗号,由于中文里面,第3位是“千”,因此,数字中的这个“逗号”也被称为“千位分隔符”。

    之所以会以每3位进行分隔,是英文的读数有关的,举个例子:英语的987,654,321读法是: nine hundred and eighty-seven billion six hundred and fifty-four thousand three hundred and twenty-one。

    其关键的数值单位,如billion,thousand正好就是千分分隔符的位置。可见这种分隔是和西方数值阅读方法相辅相成的。

    但是对于中文用户而言,这种风格反而是一种尴尬。我们的大数值单位主要就是“万”和“亿”,如果按照这种标准进行分割的话,应该是每4位进行分隔。所以,当我们一开始看到3位分隔的数字的时候,一定会奇怪这分隔的方式有些不按套路。

    由于这种语言上的差异,我们大多数人对这种千位分隔并不感冒,这里的大多数人就包括产品经理以及前端开发,比方说一件商品,一万多块钱,直接就显示一个完整的数字12888,然后就发现变成手机号了,就加个,然后就没有然后了,看上去皆大欢喜,实际上牺牲了一定的用户体验以及带来了一定的语义化障碍。

    1. 数值千位分隔与用户体验

    如果我们在头部插入:

    <meta name="format-detection" content="telephone=no">

    就意味着原本应该可以被方便快捷呼叫的手机号码,现在变成一串普通的数字。比方说我们在网上订餐厅,餐厅详情页一定会有餐厅的订餐电话号码,如果我们强制页面不支持手机格式,而此时你要打这个电话进行预订,请问你会怎么操作和处理?是不是会使用我们胡萝卜粗的手指头,去点按和小心翼翼的框选这一段数字,然后复制到剪切板,然后再到我们的通讯录粘贴号码,然后再去拨打?

    你看,原本可以一步完成的事情,现在要三四步才能完成,这用户体验啊显然大打折扣。

    2. 数值千位分隔与语义化

    无论是什么软件和设备,只要你的数字是以标准的千位分隔符表示,一定会是认为是数值,也就是明确了语义。

    语义的明确不仅对搜索引擎友好,对于其他辅助阅读设备而言,也是非常有好处的。

    拿屏幕阅读器的无障碍访问来说,如果我们网页上写的是123456789,则屏幕阅读器读的内容是“一二三四五六七八九”;但如果你写成123,456,789,则屏幕阅读器会读成:“一亿两千三百四十五万六千七百八十九”,也就是被当成一个数字来读了。乍一看好像前面的读法也能理解,那实际上会给用户带来很大的困扰,例如下面内容:“总共参加用户12288029人”,会被读成“总共参加用户一二二八八零二九人”,根本就没法get到到底多少人的。

    因此综合来看,没有任何理由不使用千位分隔符表示web网页中的大数字。

    唯一有可能反驳的是“用户看千位分隔的数字会不习惯”,这个大可必须担心,两点:首先,请问数字12288029怎么念?是不是要睁大了眼睛去找位数,然后才能读出来!在看数字12,288,029,虽然也要找位数,但要比前面的看得轻松些。也就是说,大数值你就算不分隔,照样有阅读障碍;其次,我们所有银行账户的钱数,工资明细上的钱全部都是用千位分隔的,请问你有没有把工资卡里全部的2,333.00元看成是二十三万呢?生活中有很多场景会教育用户熟悉千位数值表示法的。

    三、连续数字数值转换成逗号分隔数值表示

    假设经过学习,我们产品经理及开发人员已经意识到千位数值表示法的意义和重要性,但是,我们保存数据库的数值可能就是一个连续的数字,想要在页面上显示为逗号分隔的数值,则还需要进行进行一些转化和处理。

    有没有什么简单的方法可以把连续数字转换成逗号分隔数值呢?

    方法有很多,比较容易想到的就是进行字符分隔以及遍历处理,但这方法比较啰嗦,代码量比较大,并不推荐在实际项目中使用,嗯,我下面介绍两个我认为比较简单的方法。

    方法一:使用正则表达式

    语法如下:

    String(Number).replace(/(\d)(?=(\d{3})+$)/g, "$1,");

    举例:

    String(123456789).replace(/(\d)(?=(\d{3})+$)/g, "$1,");结果是:123,456,789

    方法二:使用toLocaleString()方法

    语法如下:

    Number.toLocaleString('en-US'); //注意里面是数字,数字Number类型外面必须()起来

    举例:

    (123456789).toLocaleString('en-US');  // 123,456,78920191026.1544.toLocaleString()  // 20191026.154(小数部分四舍五入了)

    对于中文场景下,toLocaleString('en-US')中的'en-US'理论上是可以缺省的,也就是直接(123456789).toLocaleString()也是可以得到123,456,789。但是如果你的产品可能海外用户使用,则保险起见,还是保留'en-US'。

    另外,对于IE edge之前的版本,Number.toLocaleString()会自动补上两位小数,如果是不需要的,需要自己额外过滤掉。

    3633549928fd948f65bbfcd41bd6356c.gifEND34f31468367f024e2a9a2bcbaa5ec948.gife24c5af8f7ba255afdf94cd592389a02.png扫码关注我们1d251cca4e28d30c7f77bb532e3c0506.png微信号:gh_dcd05cdf3c3e扫码关注我们,获取最新资讯。分享,点赞,在看,都在这儿,点我不香吗?
    展开全文
  • 个位数上的数字减去千位数上的数字,再减去百位数上的数字, 再减去十位数上的数字的结果大于零。 输入 输入为两行,第一行为四位数的个数n,第二行为n个的四位数,之间以一个空格分开。(n <= 100) 输出 ...

    描述
    给定若干个四位数,求出其中满足以下条件的数的个数:

    个位数上的数字减去千位数上的数字,再减去百位数上的数字, 再减去十位数上的数字的结果大于零。

    输入
    输入为两行,第一行为四位数的个数n,第二行为n个的四位数,数与数之间以一个空格分开。(n <= 100)
    输出
    输出为一行,包含一个整数,表示满足条件的四位数的个数。
    样例输入
    5
    1234 1349 6119 2123 5017
    样例输出
    3

    #include<stdio.h>
    int main()
    {
    	int a;
    	scanf("%d",&a);
    	int b,c,d=0;
    	b=1;
    	for(b=1;b<=a;b++){
    		scanf("%d",&c);
    		int m,n,q,l;
    		m=c%10;
    		n=c%100/10;
    		q=c%1000/100;
    		l=c/1000;
    		if(m>l+n+q)d++;
    	}
    	printf("%d",d);
     } 
    

    NOI(OJ)编程基础篇目录

    展开全文
  • 给定若干个四位数,求出其中满足一下条件的数的个数:个位上的数字减去千位上的数字,再减去百位上的数字,再减去十位上的数字的结果大于零。 输入:         两行,第一...

    C++统计满足条件的4位数

    给定若干个四位数,求出其中满足一下条件的数的个数:个位上的数字减去千位上的数字,再减去百位上的数字,再减去十位上的数字的结果大于零。

    输入:
            两行,第一行为四位数的个数 n(n<=100),第二行为 n 个的四位数。
    输出:
            一行,包含一个整数,表示满足条件的四位数的个数。
    样例输入:
            5
            1234  1349  6119  2123  5017
    样例输出:
             3

    参考程序

    #include<cstdio>
    using namespace std;
    int main()
    {
    	int a,b,c,d,n,m,i,s=0;		//s为这个 n 个四位数中满足条件的数的总数,初始值赋为 0
    	scanf("%d",&n);
    	for(i=1;i<=n;++i)			//循环判断每个四位数是否满足条件
    	{
    		scanf("%d",&m);
    		a=m/1000;
    		b=(m/100)%10;
    		c=(m/10)%10;
    		d=m%10;
    		if(d-a-b-c>0)s++;		//如果这个四位数满足条件,s 累加
    	}	
    	printf("%d\n",s)	
    	return 0;
    }
    
    展开全文
  • 给定若干个四位数,求出其中满足以下条件的数的个数: 个位数上的数字减去千位上的数字,再减去百位数上的数字, 再减去十位数上的数字的结果大于零。 输入格式 输入为两行,第一行为四位数的个数n,第二行为n个...
  • 个位数上的数字减去千位数上的数字,再减去百位数上的数字, 再减去十位数上的数字的结果大于零。 输入 输入为两行,第一行为四位数的个数n,第二行为n个的四位数,之间以一个空格分开。(n <= 100) 输出 ...
  • 26:统计满足条件4位数个

    千次阅读 2017-09-06 20:18:58
    个位数上的数字减去千位数上的数字,再减去百位数上的数字, 再减去十位数上的数字的结果大于零。 输入输入为两行,第一行为四位数的个数n,第二行为n个的四位数,之间以一个空格分开。(n 输出输出为一...
  • 统计满足条件4位数

    2020-02-04 16:13:30
    给定若干个四位数,求出其中满足以下条件的数的个数:个位数上的数字减去千位上的数字,再减去百位数上的数字,再减去十位数上的数字的结果大于零。 【输入】 输入为两行,第一行为四位数的个数n,第二行为n个的...
  • 个位数上的数字减去千位数上的数字,再减去百位数上的数字, 再减去十位数上的数字的结果大于零。 输入 输入为两行,第一行为四位数的个数n,第二行为n个的四位数,之间以一个空格分开。(n <= 100) 输出 ...
  • 个位数上的数字减去千位数上的数字,再减去百位数上的数字, 再减去十位数上的数字的结果大于零。 输入 输入为两行,第一行为四位数的个数n,第二行为n个的四位数,之间以一个空格分开。(n <= 100) 输出 ...
  • 个位数上的数字减去千位数上的数字,再减去百位数上的数字, 再减去十位数上的数字的结果大于零。 输入 输入为两行,第一行为四位数的个数n,第二行为n个的四位数,之间以一个空格分开。(n &lt;= 100) ...
  • 给定若干个四位数,求出其中满足以下条件的数的个数:个位数上的数字减去千位上的数字,再减去百位数上的数字,再减去十位数上的数字的结果大于零。 【输入】 输入为两行,第一行为四位数的个数n,第二行为n个的四...
  • 给定若干个四位数,求出其中满足以下条件的数的个数:个位数上的数字减去千位上的数字,再减去百位数上的数字,再减去十位数上的数字的结果大于零。 【输入】 输入为两行,第一行为四位数的个数n,第二行为n个的四...
  • 给定若干个四位数,求出其中满足以下条件的数的个数:个位数上的数字减去千位上的数字,再减去百位数上的数字,再减去十位数上的数字的结果大于零。 【输入】 输入为两行,第一行为四位数的个数n,第二行为n个的...
  • 给定若干个四位数,求出其中满足以下条件的数的个数:个位数上的数字减去千位上的数字,再减去百位数上的数字,再减去十位数上的数字的结果大于零。 【输入】 输入为两行,第一行为四位数的个数n,第二行为n个的四...
  • 做题的时候遇到的问题:用数组存储数位 ...同一个数字,由于所在的数位不同,它所表示的数值也就不同。例如,在用阿拉伯数字表示数时,同一个‘6’,放在十位上表示6个十,放在百位上表示6个百,...
  • 给定若干个四位数,求出其中满足以下条件的数的个数:个位数上的数字减去千位上的数字,再减去百位数上的数字,再减去十位数上的数字的结果大于零。 【输入】 输入为两行,第一行为四位数的个数n,第二行为n个...
  • (一)时刻--在时间序列上的某一个点。1,年。在日语中表示年份是按全部数字的位数来读。如:4位数字,就从千位读起。1987年,读作:せんきゅうひゃくはちじゅうしちねん。2001年,读作:にせんいちねん。(中间零不...
  • 位dp

    2018-08-03 15:44:47
    数位dp是一种计数用的dp,一般就是要统计一个区间[le,ri]内满足一些条件数的个数。...定义dp[i][j],其中表示i位数,最高位是j的数 举一个例子我们来理解:http://acm.hdu.edu.cn/showproblem.php?...
  • 题目:输入一个整数n,求从1到n这n个整数... 分析:可以一位一位考虑,对于10^b位:例如23456百位1)此位大于1,这一位1个数有 ([n / 10^(b+1) ] + 1) * 10^b (24*100:千位万位从0到23,百位1会出现100次)
  • 小学数学四年级上册公式、概念、规律总汇需要家长朋友们请收藏,还可以打印出来噢!第一单元:1.位顺序表要背熟位:个位、十位、...2.表示物体个数的1、2、3、4、5、6、7、8、9、10、11….都是自然数,一个...
  • 原文链接 抛开复杂的理论,直探事物的本质。...个位上的 1 表示 1,十位上的 1 表示 10,百位上的 1 表示 100,即从右向左的第 n 位就代表 10^(n-1): 761 = 7*100 + 6*10 + 1*1 = 7*10^2 + 6*10^1 + 1*...
  • 汇编语言——十进制显示Bx

    千次阅读 2016-11-30 17:38:01
    由于16位二进制数最大能表示的数是65535,所以,转换后,最多是一个万位的十进制数。转换的步骤就是:把要转换的数依次除以10000,1000,100和10,分别可以得到万位数字、千位数字、百位数字和十位数字。除以10得到...
  • 第一单元1. 计数单位就是数位。( )2. 最小的四位数是 1111。( )3. 4699 和 4701 中间的数是 4700。( )4....( )5.读含有两级的数时,先读万级,再读个级。( )5.... 840735 中的“0”表示万位上的一...

空空如也

空空如也

1 2 3 4
收藏数 80
精华内容 32
关键字:

千位上的数表示