Comment detail

LL Golf Hole 7 - バイト数を読みやすくする (Nested Flatten)
今日もLLとの彼我兵力差は開きっぱなしですが、バッチで。

バッチで扱える数値の範囲は限られている(0~2147483647)ため、表示可能な単位は Gまで
です。また、基本的に整数しか扱えないので、小数点以下 2桁まで求める関数を書いて対
応しました。(値によって若干の誤差が生じる点は目を瞑っています。)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
@echo off
  setlocal enabledelayedexpansion
    set i=0
    set n=%1

    for %%u in ("" k M G) do (
      for /f "delims=." %%i in ("!n!") do set i=%%i
      if !i! lss 1024 (echo !n!%%~u & exit /b)
      call :div !i! 1024 n
    )
  endlocal
goto :EOF

:div
  setlocal enabledelayedexpansion
    set d=
    set q=0
    set /a n=%1/%2,m=%1%%%2

    if %m% gtr 0 (
      for /l %%i in (1,1,2) do ( :: 小数点以下 2桁
        if !m! gtr 0 (
          set /a q=!m!0/%2,m=!m!0%%%2
          set d=!d!!q!
        )
      )
      set n=%n%.!d!
    )
  endlocal & set %3=%n%
goto :EOF

Index

Feed

Other

Link

Pathtraq

loading...