我正在使用此函数将文件大小(以字节为单位)转换为人类可读的文件大小:
function getReadableFileSizeString(fileSizeInBytes) {
var i = -1;
var byteUnits = [' kB', ' MB', ' GB', ' TB', 'PB', 'EB', 'ZB', 'YB'];
do {
fileSizeInBytes = fileSizeInBytes / 1024;
i++;
} while (fileSizeInBytes > 1024);
return Math.max(fileSizeInBytes, 0.1).toFixed(1) + byteUnits[i];
};
Run Code Online (Sandbox Code Playgroud)
但是,似乎这并非100%准确.例如:
getReadableFileSizeString(1551859712); // output is "1.4 GB"
Run Code Online (Sandbox Code Playgroud)
不应该这样"1.5 GB"吗?似乎1024的划分正在失去精度.我完全误解了某些东西,还是有更好的方法来做到这一点?
如何将超过3位的所有数字转换为4位或更少的数字?
这正是我的意思:
10345 = 10.3k
10012 = 10k
123546 = 123.5k
4384324 = 4.3m
Run Code Online (Sandbox Code Playgroud)
舍入并不完全重要,但还有一个额外的好处.
我已经研究过NSNumberFormatter但是没有找到合适的解决方案,而且我还没有在SO上找到合适的解决方案.非常感谢任何帮助,谢谢!
我想用一种方法在Python中显示日期项目的自然时间.类似于Twitter将如何显示"片刻之前","几分钟前","两小时前","三天前"等消息.
Django 1.0在django.contrib中有一个"humanize"方法.我没有使用Django框架,即使我是,它比我想要的更有限.
请让我(以及几代未来的搜索者)知道是否已经有一个好的工作解决方案.由于这是一个很常见的任务,我想必须有一些东西.
基于这个问题:有没有办法将数字转换为友好格式?
挑战 - 更新! (从规范中删除了数百个缩写)
按字符数排序的最短代码,将缩写整数(无小数).
代码应包括完整的程序.
相关范围来自0 - 9,223,372,036,854,775,807(有符号64位整数的上限).
缩写的小数位数为正数.您不需要计算以下内容:( 920535 abbreviated -1 place这可能是类似的0.920535M).
在十位和百地方(数字0-999)应永远缩写为(该号码的缩写57,以1+小数位是5.7dk-这是不必要的,而不是友好的).
记得从零开始一半(23.5四舍五入到24).银行家的舍入是禁止的.
以下是相关的数字缩写:
h = hundred (102)
k = thousand (103)
M = million (106)
G = billion (109)
T = trillion (1012)
P = quadrillion (1015)
E = quintillion (1018)
SAMPLE INPUTS/OUTPUTS(输入 …
language-agnostic code-golf number-formatting human-readable rosetta-stone
我在控制器的代码中使用HTTP状态代码符号,例如:
render json: {
auth_token: user.authentication_token,
user: user
},
status: :created
Run Code Online (Sandbox Code Playgroud)
要么
render json: {
errors: ["Missing parameter."]
},
success: false,
status: :unprocessable_entity
Run Code Online (Sandbox Code Playgroud)
在我的请求规范的代码中我也想使用符号:
post user_session_path, email: @user.email, password: @user.password
expect(last_response.status).to eq(201)
Run Code Online (Sandbox Code Playgroud)
...
expect(last_response.status).to eq(422)
Run Code Online (Sandbox Code Playgroud)
但是,我使用符号而不是整数的每个测试都会失败:
Failure/Error: expect(last_response.status).to eq(:created)
expected: :created
got: 201
(compared using ==)
Run Code Online (Sandbox Code Playgroud)
以下是Rack中最新的HTTP状态代码符号列表.
有谁知道如何将枚举值转换为人类可读的值?
例如:
ThisIsValueA应为"This is Value A".
我已尝试使用管道htop传输到文本文件(例如htop > text.txt),但它通过格式化字符串给出了文本乱码(见下文).有没有办法获得更好,人类可读的输出?
^[7^[[?47h^[[1;30r^[[m^[[4l^[[?1h^[=^[[m^[[?1000h^[[m^[[m^[[H^[[2J^[[1B ^[[36m1 ^[[m^[[1m[^[[m^[[32m||||||||||^[[31m||||||||||^[[30m^[[1m \
22.2%^[[m]^[[m ^[[36mTasks: ^[[1m159^[[m^[[36m total, ^[[32m^[[1m5^[[m^[[36m running^[[3;3H2 ^[[m^[[1m[^[[30m \
0.0%^[[m]^[[m ^[[36mLoad average: ^[[30m^[[1m1.11 ^[[m^[[m1.28 ^[[1m1.31 ^[[4;3H^[[m^[[36m3 ^[[m^[[1m[^[[m^[[32m||||||||||^[[30m^[[1m \
11.1%^[[m]^[[m ^[[36mUptime: ^[[1m9 days, 22:04:51^[[5;3H^[[m^[[36m4 ^[[m^[[1m[^[[30m 0.0\
%^[[m]^[[6;3H^[[m^[[36m5 ^[[m^[[1m[^[[m^[[31m||||||||||^[[30m^[[1m 11.1%^[[m]^[[7;3H^[[m^[[36m6 ^[[m^[[1m[^[[30m \
Run Code Online (Sandbox Code Playgroud) 我想以人性化的方式在C#中打印我的小数字,例如:
30µfor 3E-5或456.789nfor 0.000000456789.
我知道C中的BSD 的Humanize_number()函数,但只与bit int兼容,而不是浮点数和双精度数.在C#中有相同的支持吗?
此外,它在显示数字时应保持一定的精度,例如:
0.003596应显示为3.596µ,而不是3.6µ(或更糟4µ).
这里可能的答案是:使用.NET格式化大数字但适用于负数log10会将数字截断为逗号后的1位数.在我看来,这还远未完成.
我想如何呈现东西的例子:
3000 3K
3300 3.3K
3333 3.333K
30000 30k
300000 300k
3000000 3M
3000003 3.000003M // or 3M if I specify "4 digits precision"
0.253 253m
0.0253 25.3m
0.00253 2.53m
-0.253003 -253.003m
Run Code Online (Sandbox Code Playgroud)
我无法在SO中提出我的问题以找到相关的答案,所以如果问题已经得到解答,请开火!
我正在开展其中一个项目,其中有一百万个更好的方法来完成我需要的东西,但我别无选择,我必须这样做.这里是:
有一个Web表单,当用户填写它并点击提交时,使用表单数据创建一个人类可读的文本文件.它看起来像这样:
field_1: value for field one
field_2: value for field two
more data for field two (field two has a newline in it!)
field3: some more data
Run Code Online (Sandbox Code Playgroud)
我的问题是:我需要将此文本文件解析回Web表单,以便用户可以编辑它.
我怎么能以万无一失的方式实现这一目标呢?数据库不是一个选项,我必须使用这些文本文件.
我的问题:
这个项目使用PHP.
UPDATE
通过人类可读,我的意思是任何人都可以阅读文本,而不是被它淹没,包括你的祖母.
所以我试图在linux中分析非常大的日志文件,我已经看到了大量的解决方案,但是记录数据的程序不允许输出格式化因此它只以人类可读的格式输出(我知道,多么痛苦).所以问题是:如何使用像awk这样的东西将人类可读转换为字节:
所以转换这个:
937
1.43K
120.3M
Run Code Online (Sandbox Code Playgroud)
至:
937
1464
126143693
Run Code Online (Sandbox Code Playgroud)
我负担得起,我期待一些舍入错误.
提前致谢.
PS只要它可以提供内联转换,就不必是awk.
我找到了这个,但给出的awk命令似乎无法正常工作.它输出类似534K"0"的东西.
我还找到了一个使用sed和bc的解决方案,但因为它使用bc它的效率有限,这意味着它一次只能使用一列,所有数据都必须适合bc,否则就会失败.
sed -e 's/K/\*1024/g' -e 's/M/\*1048576/g' -e 's/G/\*1073741824/g' | bc