来大姨妈适合吃什么水果| m标志是什么牌子衣服| 大便感觉拉不干净什么原因| 鸭嘴鱼吃什么食物| 731是什么意思| 什么的嗓音| 红豆和什么搭配最好| 黄精有什么作用和功效| 乙肝病毒表面抗体阳性是什么意思| 彩虹代表什么生肖| 黄精为什么要九蒸九晒| 剁椒鱼头是什么菜系| 言外之意是什么意思| 调和油是什么意思| 中耳炎不能吃什么食物| 生菜不能和什么一起吃| 你想干什么| 甲醛对人体有什么危害| 大便黄绿色是什么原因| 心火是什么原因引起的| alike是什么意思| 吃人参果有什么好处| 胃痉挛有什么症状| 一个王一个八念什么| 什么是扁平疣| 肝硬化挂什么科| 凌晨三点醒是什么原因| 半夜口渴是什么原因| 印堂在什么位置| 间质性肺病是什么意思| 孩子鼻子流鼻血是什么原因| 阳痿挂什么科| 尖锐湿疣用什么药| 看灰指甲去医院挂什么科| 头发干枯毛躁是什么原因| 尿沉渣检查什么| 阴桃花是什么意思| 什么的道理| 做梦梦到蜘蛛是什么意思| 黑蓝色是什么颜色| 子宫腺肌症是什么病| 日本料理都有什么菜| 什么牌子洗面奶好用| 有痰吃什么药| 面皮是什么做的| 女性夜尿多吃什么调理| 筋是什么组织| 7.11是什么星座| 门字五行属什么| 木隶念什么| 新生儿前面头发稀少是什么原因| 啤酒兑什么饮料好喝| 血压偏低是什么原因造成的| 脾胃虚弱吃什么食物补| icd是什么意思| 怕痒的男人意味着什么| 袋鼠属于什么类动物| 盆腔炎是什么症状| 身上发冷是什么原因| 尐是什么意思| 颠了是什么意思| 原研药是什么意思| 什么食物含硒量最高| swisse是什么意思| 猪精是什么| 血尿挂什么科| 路政属于什么单位| 做血常规检查挂什么科| 冬至为什么吃水饺| 泌乳素高有什么影响| 纯水是什么| hba是什么意思| 猫咪黑下巴是什么原因| 腺体鳞化是什么意思| 星字五行属什么| 为什么出汗特别多| 骑马挥杆是什么牌子| 8岁属什么| 后妈是什么意思| 微商是什么意思| 咳嗽吃什么食物| 外阴炎用什么药膏| 梦见别人掉牙齿是什么征兆| 驾驶证c1和c2有什么区别| 直肠增生性的息肉是什么意思| 子宫在肚脐眼什么位置| 9.22是什么星座| 性情什么意思| 女性尿路感染有什么症状| kohler是什么品牌| 河水像什么| 鸡壳是什么| 欧米茄属于什么档次| 广谱是什么意思| 食物过敏吃什么药| 什么狗不掉毛适合家养| 一劳永逸什么意思| 长期玩手机会得什么病| 尿检ph值偏高说明什么| 什么是18k金| 应届毕业生是什么意思| 7.17是什么日子| 犬字旁的字和什么有关| 遗精是什么感觉| 心脏房颤吃什么药最好| 小孩吃什么能长高| 钧鉴是什么意思| 什么东西进去是硬的出来是软的| 什么是什么的眼睛| 黄体是什么| 玻璃水是干什么用的| 孕晚期宫缩是什么感觉| 熊人是什么意思| 什么人容易得白肺病| 59岁属什么生肖| 小孩呕吐是什么原因| 市政协主席是什么级别| 心肌是什么意思| 吃什么不会长胖| 2月14日什么星座| 脚磨破了涂什么药| 吹空调喉咙痛什么原因| 孕酮低吃什么可以补| 聚酯纤维是什么材料| c14和c13有什么区别| 小孩抽动症是什么引起的| 寂寞难耐是什么意思| 游走性疼痛挂什么科| 肝火旺盛吃什么药效果最好| 做梦来月经了什么预兆| 插入阴道什么感觉| 抢沙发是什么意思| 什么样的白带是怀孕了| 狗狗拉血是什么原因| 什么的小船| 后卫是干什么的| 什么人吃天麻最好| 勉铃是什么| 脑卒中是什么病| 卉是什么意思| 黄疸是什么样子的图片| 低血糖看什么科室| 怀孕前三个月需要注意什么| 什么是晶体| 身份是什么意思| 什么是k金| 腱鞘是什么| 腐竹是什么做的| 蒲公英和什么相克致死| 双相情感障碍什么意思| lym是什么意思| 晚饭吃什么| 疝气挂什么科| 结缔组织是什么| 下午5点半是什么时辰| 肾湿热吃什么中成药| 孕妇吃什么好| 梦见蝙蝠是什么意思| 奶白色是什么颜色| 胸膜增厚吃什么药| 供观音菩萨有什么讲究| 雌激素低吃什么药| 空调出风小没劲什么原因| 黄的什么| 什么叫做脂肪肝| 黑眼袋是什么原因引起的| 胸闷气短呼吸困难心慌是什么原因| 去冰和常温有什么区别| 镶牙与种牙有什么区别| 1996年1月属什么生肖| giada是什么牌子| 早博是什么意思| 龟头有点痒擦什么药| 血压高有什么表现| 为什么胸闷一吃丹参滴丸就好| galaxy是什么牌子| 形态各异的异是什么意思| 天井是什么| 高血压一般在什么年龄| 师长是什么军衔| 妈祖属什么生肖| 中药龙骨是什么东西| 37属什么| 观察是什么意思| 三周年祭奠有什么讲究| 嫣字五行属什么| 龙的三合生肖是什么| HlV是什么| 重金属是什么| 买手店是什么意思| 一什么桌子| 小孩便秘吃什么通便快| 男人说冷静一段时间是什么意思| 肠鸣吃什么药| 肾积水是什么原因造成的| 夏对什么| 红霉素软膏和眼膏有什么区别| 什么外之什么| 角是什么生肖| junior什么意思| 纷扰是什么意思| 踢馆什么意思| 村居是什么意思| 备孕吃什么药| 1月17号什么星座| 鼓目念什么| 什么验孕棒准确率高| karcher是什么牌子| 卡尔文克莱恩是什么牌子| 后羿是什么生肖| 叶酸有什么作用| 类风湿关节炎不能吃什么食物| 3楼五行属什么| 尿白细胞加减什么意思| 青岛啤酒节什么时候| 不昧因果是什么意思| 喝蜂蜜水对身体有什么好处| 感冒看什么科| 腋臭去医院挂什么科| 中位数是什么| dsd是什么意思| 一月九号是什么星座| 呼吸道感染用什么药| 系带割掉了有什么影响| 弱水三千只取一瓢什么意思| 阴历六月十九是什么日子| 什么是超纤皮| 尿白细胞定量高是什么意思| 做流产手术需要准备什么东西| 如来是什么意思| ac是什么基团| 祥林嫂是什么样的人| 药鱼用什么药效果最好| 什么东西最贵| ros是什么意思| 喉咙里的小肉球叫什么| 腿上起水泡是什么原因| oto是什么意思| 夜尿多什么原因| 无后为大的前一句是什么| 抗炎和消炎有什么区别| 强身之道的强是什么意思| 民政局局长什么级别| 眷属是什么意思| 吃黄瓜有什么好处| 失策是什么意思| 蟹粉是什么| 月痨病是什么病| 哥斯拉是什么| 人少了一魄什么反应| 护照补办需要什么材料| 肺有小结节要注意什么| 左手指头麻木是什么原因| ysl是什么品牌| 手心发热吃什么药| dha中文叫什么| 葡萄糖偏高有什么问题| 日字旁跟什么有关| 治脚气用什么药| 心胆气虚吃什么中成药| 血管夹层是什么病| 十二月十八号是什么星座| 肚子特别疼是什么原因| 吃什么丰胸最好| 百度???????? ?? ?????

中国拥6艘航母需几年?美媒给出惊人答案(1)-海外视角

? ?????????? ???? ???????? ?? ???
百度 师者,所以传道授业解惑也。

?????? ????? ??? ?????? ????? ?? ?? Module:Math/?????? ?? ??

--[[

This module provides a number of basic mathematical operations.

]]

local yesno, getArgs -- lazily initialized

local p = {} -- Holds functions to be returned from #invoke, and functions to make available to other Lua modules.
local wrap = {} -- Holds wrapper functions that process arguments from #invoke. These act as intemediary between functions meant for #invoke and functions meant for Lua.

--[[
Helper functions used to avoid redundant code.
]]

local function err(msg)
	-- Generates wikitext error messages.
	return mw.ustring.format('<strong class="error">Formatting error: %s</strong>', msg)
end

local function unpackNumberArgs(args)
	-- Returns an unpacked list of arguments specified with numerical keys.
	local ret = {}
	for k, v in pairs(args) do
		if type(k) == 'number' then
			table.insert(ret, v)
		end
	end
	return unpack(ret)
end

local function makeArgArray(...)
	-- Makes an array of arguments from a list of arguments that might include nils.
	local args = {...} -- Table of arguments. It might contain nils or non-number values, so we can't use ipairs.
	local nums = {} -- Stores the numbers of valid numerical arguments.
	local ret = {}
	for k, v in pairs(args) do
		v = p._cleanNumber(v)
		if v then
			nums[#nums + 1] = k
			args[k] = v
		end
	end
	table.sort(nums)
	for i, num in ipairs(nums) do
		ret[#ret + 1] = args[num]
	end
	return ret
end

local function applyFuncToArgs(func, ...)
	-- Use a function on all supplied arguments, and return the result. The function must accept two numbers as parameters,
	-- and must return a number as an output. This number is then supplied as input to the next function call.
	local vals = makeArgArray(...)	
	local count = #vals -- The number of valid arguments
	if count == 0 then return
		-- Exit if we have no valid args, otherwise removing the first arg would cause an error.
		nil, 0
	end 
	local ret = table.remove(vals, 1)
	for _, val in ipairs(vals) do
		ret = func(ret, val)
	end
	return ret, count
end

--[[
random

Generate a random number

Usage:
{{#invoke: Math | random }}
{{#invoke: Math | random | maximum value }}
{{#invoke: Math | random | minimum value | maximum value }}
]]

function wrap.random(args)
	local first = p._cleanNumber(args[1])
	local second = p._cleanNumber(args[2])
	return p._random(first, second)
end

function p._random(first, second)
	math.randomseed(mw.site.stats.edits + mw.site.stats.pages + os.time() + math.floor(os.clock() * 1000000000))
	-- math.random will throw an error if given an explicit nil parameter, so we need to use if statements to check the params.
	if first and second then
		if first <= second then -- math.random doesn't allow the first number to be greater than the second.
			return math.random(first, second)
		end
	elseif first then
		return math.random(first)
	else
		return math.random()
	end
end

--[[
order

Determine order of magnitude of a number

Usage:
{{#invoke: Math | order | value }}
]]

function wrap.order(args)
	local input_string = (args[1] or args.x or '0');
	local input_number = p._cleanNumber(input_string);
	if input_number == nil then
		return err('order of magnitude input appears non-numeric')
	else
		return p._order(input_number)
	end    
end

function p._order(x)
	if x == 0 then return 0 end
	return math.floor(math.log10(math.abs(x)))
end

--[[
precision

Detemines the precision of a number using the string representation

Usage:
{{ #invoke: Math | precision | value }}
]]

function wrap.precision(args)
	local input_string = (args[1] or args.x or '0');
	local trap_fraction = args.check_fraction;
	local input_number;

	if not yesno then
		yesno = require('Module:Yesno')
	end
	if yesno(trap_fraction, true) then -- Returns true for all input except nil, false, "no", "n", "0" and a few others. See [[Module:Yesno]].
		local pos = string.find(input_string, '/', 1, true);
		if pos ~= nil then
			if string.find(input_string, '/', pos + 1, true) == nil then
				local denominator = string.sub(input_string, pos+1, -1);
				local denom_value = tonumber(denominator);
				if denom_value ~= nil then
					return math.log10(denom_value);
				end
			end                        
		end
	end    

	input_number, input_string = p._cleanNumber(input_string);
	if input_string == nil then
		return err('precision input appears non-numeric')
	else
		return p._precision(input_string)
	end    
end

function p._precision(x)
	if type(x) == 'number' then
		x = tostring(x)
	end
	x = string.upper(x)

	local decimal = x:find('%.')
	local exponent_pos = x:find('E')
	local result = 0;

	if exponent_pos ~= nil then
		local exponent = string.sub(x, exponent_pos + 1)
		x = string.sub(x, 1, exponent_pos - 1)
		result = result - tonumber(exponent)
	end    

	if decimal ~= nil then
		result = result + string.len(x) - decimal
		return result
	end

	local pos = string.len(x);
	while x:byte(pos) == string.byte('0') do
		pos = pos - 1
		result = result - 1
		if pos <= 0 then
			return 0
		end
	end

	return result
end

--[[
max

Finds the maximum argument

Usage:
{{#invoke:Math| max | value1 | value2 | ... }}

Note, any values that do not evaluate to numbers are ignored.
]]

function wrap.max(args)
	return p._max(unpackNumberArgs(args))
end

function p._max(...)
	local function maxOfTwo(a, b)
		if a > b then
			return a
		else
			return b
		end
	end
	local max_value = applyFuncToArgs(maxOfTwo, ...)
	if max_value then
		return max_value
	end
end

--[[
min 

Finds the minimum argument

Usage:
{{#invoke:Math| min | value1 | value2 | ... }}
OR
{{#invoke:Math| min }}

When used with no arguments, it takes its input from the parent
frame.  Note, any values that do not evaluate to numbers are ignored.
]]

function wrap.min(args)
	return p._min(unpackNumberArgs(args))
end

function p._min(...)
	local function minOfTwo(a, b)
		if a < b then
			return a
		else
			return b
		end
	end
	local min_value = applyFuncToArgs(minOfTwo, ...)
	if min_value then
		return min_value
	end
end

--[[
average 

Finds the average

Usage:
{{#invoke:Math| average | value1 | value2 | ... }}
OR
{{#invoke:Math| average }}

Note, any values that do not evaluate to numbers are ignored.
]]

function wrap.average(args)
	return p._average(unpackNumberArgs(args))
end

function p._average(...)
	local function getSum(a, b)
		return a + b
	end
	local sum, count = applyFuncToArgs(getSum, ...)
	if not sum then
		return 0
	else
		return sum / count
	end
end

--[[
round

Rounds a number to specified precision

Usage:
{{#invoke:Math | round | value | precision }}

--]]

function wrap.round(args)
	local value = p._cleanNumber(args[1] or args.value or 0)
	local precision = p._cleanNumber(args[2] or args.precision or 0)
	if value == nil or precision == nil then
		return err('round input appears non-numeric')
	else
		return p._round(value, precision)
	end    
end

function p._round(value, precision)
	local rescale = math.pow(10, precision or 0);
	return math.floor(value * rescale + 0.5) / rescale;
end

--[[
mod

Implements the modulo operator

Usage:
{{#invoke:Math | mod | x | y }}

--]]

function wrap.mod(args)
	local x = p._cleanNumber(args[1])
	local y = p._cleanNumber(args[2])
	if not x then
		return err('first argument to mod appears non-numeric')
	elseif not y then
		return err('second argument to mod appears non-numeric')
	else
		return p._mod(x, y)
	end    
end

function p._mod(x, y)
	local ret = x % y
	if not (0 <= ret and ret < y) then
		ret = 0
	end
	return ret
end

--[[
gcd

Calculates the greatest common divisor of multiple numbers

Usage:
{{#invoke:Math | gcd | value 1 | value 2 | value 3 | ... }}
--]]

function wrap.gcd(args)
	return p._gcd(unpackNumberArgs(args))
end

function p._gcd(...)
	local function findGcd(a, b)
		local r = b
		local oldr = a
		while r ~= 0 do
			local quotient = math.floor(oldr / r)
			oldr, r = r, oldr - quotient * r
		end
		if oldr < 0 then
			oldr = oldr * -1
		end
		return oldr
	end
	local result, count = applyFuncToArgs(findGcd, ...)
	return result
end

--[[
precision_format

Rounds a number to the specified precision and formats according to rules 
originally used for {{template:Rnd}}.  Output is a string.

Usage:
{{#invoke: Math | precision_format | number | precision }}
]]

function wrap.precision_format(args)
	local value_string = args[1] or 0
	local precision = args[2] or 0
	return p._precision_format(value_string, precision)
end

function p._precision_format(value_string, precision)
	-- For access to Mediawiki built-in formatter.
	local lang = mw.getContentLanguage();

	local value
	value, value_string = p._cleanNumber(value_string)
	precision = p._cleanNumber(precision)

	-- Check for non-numeric input
	if value == nil or precision == nil then
		return err('invalid input when rounding')
	end

	local current_precision = p._precision(value)
	local order = p._order(value)

	-- Due to round-off effects it is neccesary to limit the returned precision under
	-- some circumstances because the terminal digits will be inaccurately reported.
	if order + precision >= 14 then
		orig_precision = p._precision(value_string)
		if order + orig_precision >= 14 then
			precision = 13 - order;        
		end        
	end

	-- If rounding off, truncate extra digits
	if precision < current_precision then
		value = p._round(value, precision)
		current_precision = p._precision(value)
	end    

	local formatted_num = lang:formatNum(math.abs(value))
	local sign

	-- Use proper unary minus sign rather than ASCII default
	if value < 0 then
		sign = '?'
	else
		sign = ''
	end    

	-- Handle cases requiring scientific notation
	if string.find(formatted_num, 'E', 1, true) ~= nil or math.abs(order) >= 9 then
		value = value * math.pow(10, -order)
		current_precision = current_precision + order
		precision = precision + order
		formatted_num = lang:formatNum(math.abs(value))
	else
		order = 0;        
	end
	formatted_num = sign .. formatted_num

	-- Pad with zeros, if needed    
	if current_precision < precision then
		local padding
		if current_precision <= 0 then
			if precision > 0 then
				local zero_sep = lang:formatNum(1.1)
				formatted_num = formatted_num .. zero_sep:sub(2,2)

				padding = precision
				if padding > 20 then
					padding = 20
				end

				formatted_num = formatted_num .. string.rep('0', padding)
			end            
		else                   
			padding = precision - current_precision
			if padding > 20 then
				padding = 20
			end
			formatted_num = formatted_num .. string.rep('0', padding)
		end
	end

	-- Add exponential notation, if necessary.
	if order ~= 0 then
		-- Use proper unary minus sign rather than ASCII default
		if order < 0 then
			order = '?' .. lang:formatNum(math.abs(order))
		else
			order = lang:formatNum(order)
		end    

		formatted_num = formatted_num .. '<span style="margin:0 .15em 0 .25em">×</span>10<sup>' .. order .. '</sup>'
	end

	return formatted_num
end

--[[
Helper function that interprets the input numerically.  If the 
input does not appear to be a number, attempts evaluating it as
a parser functions expression.
]]

function p._cleanNumber(number_string)
	if type(number_string) == 'number' then
		-- We were passed a number, so we don't need to do any processing.
		return number_string, tostring(number_string)
	elseif type(number_string) ~= 'string' or not number_string:find('%S') then
		-- We were passed a non-string or a blank string, so exit.
		return nil, nil;
	end

	-- Attempt basic conversion
	local number = tonumber(number_string)

	-- If failed, attempt to evaluate input as an expression
	if number == nil then
		local success, result = pcall(mw.ext.ParserFunctions.expr, number_string)
		if success then
			number = tonumber(result)
			number_string = tostring(number)
		else
			number = nil
			number_string = nil
		end
	else
		number_string = number_string:match("^%s*(.-)%s*$") -- String is valid but may contain padding, clean it.
		number_string = number_string:match("^%+(.*)$") or number_string -- Trim any leading + signs.
		if number_string:find('^%-?0[xX]') then
			-- Number is using 0xnnn notation to indicate base 16; use the number that Lua detected instead.
			number_string = tostring(number)
		end
	end

	return number, number_string
end

--[[
Wrapper function that does basic argument processing. This ensures that all functions from #invoke can use either the current
frame or the parent frame, and it also trims whitespace for all arguments and removes blank arguments.
]]

local mt = { __index = function(t, k)
	return function(frame)
		if not getArgs then
			getArgs = require('Module:Arguments').getArgs
		end
		return wrap[k](getArgs(frame))  -- Argument processing is left to Module:Arguments. Whitespace is trimmed and blank arguments are removed.
	end
end }

--En funktion som ska hj?lpa Modul:Wikidata att f? r?tt avrundning p? sina siffror
function p.newFromWikidataValue(frame)
	upeer = frame.upperBound if not upeer then upeer = '0' end
	lower = frame.lowerBound if not lower then lower = '0' end
	local diff = math.abs(tonumber(upeer) - tonumber(frame.amount))
	local diff2 = math.abs(tonumber(lower) - tonumber(frame.amount)) 
		if diff2 > diff then
			diff = diff2
		end

	-- TODO, att fixa s? att inte 1234.000 'huggs av' till 1234
	local lang = mw.language.new( 'ps' )
	if diff == 0 then
		return lang:formatNum(tonumber(frame.amount))
	else
		local log = -math.log10(diff)
		return lang:formatNum(p._round(frame.amount, math.ceil(log)))
	end
end

return setmetatable(p, mt)
带状疱疹后遗神经痛挂什么科 发烧喝什么药 老是掉发是什么原因 一朵什么 一什么桌子
扫把星代表什么生肖 丰的部首是什么偏旁 杜鹃花什么时候开 爻卦是什么意思 脱臼是指什么从什么中滑脱
慢性胃炎吃什么好 滑板鞋是什么鞋 坐怀不乱是什么意思 梦见刮胡子是什么意思 早醒是什么原因
什么是肾癌 潮汐车道是什么意思 喉咙痒咳嗽是什么原因 月经淋漓不尽吃什么药 fl表示什么意思
配制酒是什么意思hcv9jop5ns5r.cn 什么叫艾滋病hcv9jop4ns4r.cn 什么是无机盐sanhestory.com 什么人不能摆放大象hcv9jop4ns9r.cn 经期是什么意思hcv8jop2ns0r.cn
赤日对什么hcv8jop2ns6r.cn 小腿怕冷是什么原因hcv9jop1ns4r.cn 急性肠胃炎用什么药hcv8jop4ns1r.cn 夷是什么意思hcv8jop7ns9r.cn 剑兰什么时候开花hcv8jop3ns9r.cn
食铁兽是什么动物hlguo.com 喉结不明显的男生是什么原因adwl56.com 6月19是什么星座hcv9jop4ns2r.cn 什么是易孕体质gysmod.com 甲减是什么病hcv9jop4ns1r.cn
阴道口痒是什么原因hcv9jop1ns9r.cn vivo是什么牌子bfb118.com 博字五行属什么helloaicloud.com 9月20日是什么星座hcv8jop5ns8r.cn 撸猫是什么意思hcv8jop3ns7r.cn
百度